2010-08-09 7 views
0

La seule façon que je sais de prendre le contenu d'un fichier local et de pousser ces octets vers un serveur est de mettre en place un poste avec un type approprié <input> pour inviter l'utilisateur à sélectionner un fichier.Le contenu du fichier dans Javascript dans un navigateur

Je voudrais faire la même chose que de pousser les données à travers XMLHttpRequest (pas de trucs de cross-scripting).

Actuellement, nous faisons cela avec un iframe pour obtenir le comportement de publication.

Mon sens est l'iframe est la seule solution, mais je poste ici au cas où j'ai raté quelque chose.

+0

Quels navigateurs voulez-vous prendre en charge ou pouvez-vous limiter les navigateurs à prendre en charge? –

+0

Navigateurs récents. Au moins Chrome et FF. Certains IE seraient utiles, mais je suis intéressé par les options, même si elle est éliminée de la considération. – bmargulies

Répondre

1

Vous pouvez utiliser l'API de fichier JavaScript (disponible dans Firefox 3.6 ou version ultérieure et les dernières versions de Chrome et Safari). Fondamentalement, vous pouvez ajouter un écouteur d'événement à la balise <input> qui se déclenchera lorsqu'un utilisateur sélectionne un fichier. Ensuite, vous pouvez le télécharger en utilisant un XMLHttpRequest. En outre, l'API de fichiers peut vous permettre de faire d'autres choses fantaisistes, telles que des téléchargements par glisser-déposer, obtenir des informations sur un fichier avant qu'il ne soit envoyé au serveur et fournir une barre de progression lors du téléchargement.
Plus d'info: https://developer.mozilla.org/en/using_files_from_web_applications

Ce n'est pas une bonne solution multi-navigateur, car il ne dispose pas d'un bon soutien dans tous les navigateurs populaires (Internet Explorer), mais vous pouvez utiliser la détection de fonction en JavaScript pour détecter si le File API est disponible et revient à votre méthode iframe si ce n'est pas le cas.