Что использовать вместо 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