2010-08-09 1 views
0

Единственный способ, которым я знаю, чтобы взять содержимое локального файла и направить эти байты на сервер, - это создать сообщение формы с соответствующим типом <input>, чтобы предложить пользователю выбрать файл.Содержимое файла в Javascript в браузере

Я хотел был бы сделать то же самое только толкаю данные через XMLHttpRequest (без кросс-скриптовых трюков).

В настоящее время мы делаем это с помощью iframe, чтобы получить поведение сообщения.

Я считаю, что iframe является единственным решением, но я отправляю его здесь, если я что-то пропустил.

+0

Какие браузеры вы хотите поддерживать или можете ограничить поддержку браузеров? –

+0

Недавние браузеры. По крайней мере, Chrome и FF. Некоторое IE было бы полезно, но меня интересуют варианты, даже если его исключить из рассмотрения. – bmargulies

ответ

1

Вы можете использовать API файлов JavaScript (доступный в Firefox 3.6 или более поздней версии и последние версии Chrome и Safari). В принципе, вы можете добавить прослушиватель событий в тег <input>, который будет срабатывать при выборе пользователем файла. Затем вы можете загрузить его с помощью XMLHttpRequest. Кроме того, File API может позволить вам делать другие причудливые вещи, такие как перетаскивание с перетаскиванием, получение информации о файле до его отправки на сервер и предоставление полосы выполнения при загрузке файла.
Подробнее: https://developer.mozilla.org/en/using_files_from_web_applications

Это не является хорошим решением кросс-браузер, поскольку он не имеет хорошую поддержку во всех популярных браузерах (Internet Explorer ), но вы можете использовать функцию обнаружения в JavaScript, чтобы обнаружить, если Файл API доступен и возвращается к вашему методу iframe, если это не так.