Что использовать вместо FileReader для Safari? - PullRequest
10 голосов
/ 12 октября 2011

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

Моя страница позволяет пользователю выбрать файл, который затем читается на стороне клиента и отображается в текстовом поле на странице. Я нашел самый простой способ сделать это - использовать объект 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 ]

6 голосов
/ 01 ноября 2011

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

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

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

1 голос
/ 13 сентября 2014

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

См .: https://github.com/Jahdrien/FileReader

...