HTML 4 эквивалент HTML5 FileReader? - PullRequest
5 голосов
/ 23 марта 2011

У меня есть веб-страница, на которой должна быть возможность загружать файлы в DOM с локальной машины, на которой работает браузер. Я обнаружил, что это очень легко сделать с помощью HTML 5 File API.

Я могу просто сделать:

var reader = new FileReader();  
reader.onload = function (fileContents) { ... load contents to a div ... }
reader.readAsText(f) //where f is an HTML5 File object

Досадно, мне нужно это для работы в IE7, а также в некоторых более ранних версиях Firefox, которые не поддерживают API. Есть ли какой-нибудь простой способ загрузить локальный файл в DOM в старых браузерах?

Большое спасибо!

Ответы [ 3 ]

6 голосов
/ 23 марта 2011

Нет, вы не можете сделать это в старых браузерах. FileReader (на самом деле любой доступ к файловой системе) - это новая функция HTML5, которая не поддерживается в старых браузерах.

Ваш лучший вариант в старом браузере:

  1. Приложение Silverlight, Flash или Java (или аналогичное), которое работает на стороне клиента и имеет доступ к локальной файловой системе.
  2. Пользователь загружает файлы с использованием элемента <input type="file"> и выполняет обработку на стороне сервера.
5 голосов
/ 23 марта 2011

В дополнение к другим ответам здесь, похоже, что нет единого способа сделать это на стороне клиента (кроме Flash) для старых браузеров.

Однако для IE7 / 8 мне удалосьвзломать что-нибудь вместе с помощью ActiveX.

var filePath = f:\oo.txt;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var textStream = fso.OpenTextFile(filePath);
var fileData = file.ReadAll();

Затем я могу передать это той же функции, что и reader.onload в вопросе выше.Очевидно, что это плохое, взломанное решение, которое может быть заблокировано некоторыми политиками безопасности - хотя оно работает по крайней мере для IE7!

3 голосов
/ 23 марта 2011

Похоже, что вы можете сделать это через Flash. Альтернатива Flash для FileReader HTML 5 API

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...