#html #google-chrome #filereader
#HTML #google-chrome #filereader
Вопрос:
Я использую программу чтения файлов HTML5 для чтения локального файла. Затем я хочу немедленно отобразить содержимое файла в браузере перед загрузкой на сервер.
Я читаю файл и пытаюсь отобразить его следующим образом:
var reader = new FileReader();
reader.onloadend = function () {
_moleculefilestream = reader.resu<
_molecule.filename = filelist[0].name;
var filetype = _molecule.filename.substring(_molecule.filename.length - 3);
var html = '';
if (filetype == 'jpg' || filetype == 'gif' || filetype == 'png' || filetype == 'tif' || filetype == 'bmp') {
html = '<img src="' reader.result '" />';
}
else {
html = '<object id="zzzxxx" data="' reader.result '"';
if (filetype.toLowerCase() == 'pdf') {
// For pdf docs, specify a height and width
html = ' width="770" height="350"';
}
html = '>';
html = '</object>';
}
alert('we get here fine');
$('#molecule-docviewer').html(html);
alert('we have crashed by this point');
MarkMoleculeAsDirty();
}
reader.readAsDataURL(filelist[0]);
Когда я загружаю PDF-файл размером около 1,5 Мб в Chrome, все работает нормально. Когда я пытаюсь загрузить файл размером 1,5 Мб или больше, Chrome (V15) выходит из строя с сообщением «aw snap». Он отображает сообщение «мы добрались сюда нормально», но вылетает в следующей строке.
У кого-нибудь есть какие-нибудь яркие идеи о том, как это исправить или обойти? Спасибо.
Комментарии:
1. Я предлагаю вам отправить это в Chromium issue tracker и попросить помощи там — возможно, разработчики знают лучше
2. То же самое происходит и со мной, похоже, это связано с механизмом рендеринга. Вы случайно не отправили сообщение об ошибке команде разработчиков Chromium?
Ответ №1:
Вам следует рассмотреть возможность использования URL-адреса большого двоичного объекта вместо URL-адреса данных. На самом деле вы не манипулируете байтами файла, поэтому нет причин считывать весь файл в память, а затем добавлять 33% накладных расходов на base64, кодируя его как URL-адрес данных.
window.URL = window.URL || window.webkitURL;
var file = filelist[0];
var url = window.URL.createObjectURL(file);
var html = '';
if (file.type amp;amp; file.type.match('image/.*')) {
html = '<img src="' url '" />';
}
....
Комментарии:
1. не забудьте проверить совместимость браузера с этими функциями developer.mozilla.org/en-US/docs/Web/API /…
2. Вы, сэр, бог среди людей JS! :-*