Что использовать вместо FileReader для Safari?

(Я новичок в веб-программировании, поэтому извиняюсь за отсутствие элементарных знаний.)

Моя страница позволяет пользователю выбрать файл, который затем читается на стороне клиента и отображается в текстовом поле на странице. Самым простым способом, который я нашел для этого, было использование объекта FileReader, который прекрасно работает в Firefox и Chrome.

Это не работает в Safari (пока), так что мне делать вместо этого?

//When the eventlistener detects a change in the input file...
var file = evt.target.files[0]
var reader = new FileReader();
reader.onload = function (e){document.getElementById('data').value = e.target.result};
reader.readAsText(file);

Соответствующие примечания:

  • Я работаю с Safari для Windows
  • Прямо сейчас страница является локальной, как и файл для чтения. У Chrome были проблемы с этим, пока я не использовал флаг --allow-file-access-from-files

2 ответа

Решение

К сожалению, единственный ответ, который я могу придумать, - это увеличить пропускную способность.

Во-первых, используйте что-то вроде if (typeof FileReader !== "undefined" или Modernizr, чтобы следовать вашему обычному потоку для браузеров, которые поддерживают FileReader. В противном случае, отправьте файл через AJAX в какой-нибудь серверный скрипт, который возвращает содержимое.

Таким образом, для совместимых браузеров вы можете сэкономить некоторую пропускную способность, а для несовместимых браузеров вы должны выбрать один для команды.

Другое решение заключается в использовании "Полифилла FileReader для Internet Explorer и Safari с использованием Flash"

Смотрите: https://github.com/Jahdrien/FileReader

Другие вопросы по тегам