Это действительно странно, и часы поиска не нашли ответа. Я пытаюсь прочитать локальный файл с помощью javascript. Я просто выводят некоторые свойства текстового файла, включая первую строку, чтобы посмотреть, читает ли он это нормально. Кажется, это работает, за исключением одного. Когда я нажимаю кнопку "Обзор", выберите файл и нажмите "ОК", строка javascript, назначенная firstLine, будет правильно отображаться в окне предупреждения, но не в output.push. Вот основной код:
function handleFileSelect(evt) {
var f = evt.target.files[0]; // FileList object
var reader = new FileReader();
reader.readAsText(f);
reader.onload = function(e) {
var contents = e.target.result;
var firstLine = contents.substr(0, contents.indexOf("\n"));
alert( "Got the file\n"
+"name: " + f.name + "\n"
+"type: " + f.type + "\n"
+"size: " + f.size + " bytes\n"
+"starts with: " + firstLine //firstLine correctly shows up here
);
var output = [];
output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
f.size, ' bytes, last modified: ',
f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
' starts with: '+ firstLine, //but not here
'</li>');
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
};
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
У меня есть следующие две строки чуть выше тега скрипта в разделе главы:
<input type="file" id="files" />
<output id="list"></output>
Еще одна странная вещь: если я помещаю эти две строки в раздел тела, где я их действительно хочу, элемент ввода появляется, но ничего не отображается для вывода.
Следующие работы просто прекрасны. Обратите внимание, что я переместил последнюю строку вашего javascript в функцию, вызвавшую после завершения загрузки страницы. Я получаю текст файла как в поле предупреждения, так и на самой странице. (Google Chrome версии 32.0.1700.76 м)
<!DOCTYPE html>
<html>
<head>
<script>
function byId(e){return document.getElementById(e);}
window.addEventListener('load', mInit, false);
function mInit()
{
byId('files').addEventListener('change', handleFileSelect, false);
}
function handleFileSelect(evt) {
var f = evt.target.files[0]; // FileList object
var reader = new FileReader();
reader.readAsText(f);
reader.onload = function(e) {
var contents = e.target.result;
var firstLine = contents.substr(0, contents.indexOf("\n"));
alert( "Got the file\n"
+"name: " + f.name + "\n"
+"type: " + f.type + "\n"
+"size: " + f.size + " bytes\n"
+"starts with: " + firstLine //firstLine correctly shows up here
);
var output = [];
output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
f.size, ' bytes, last modified: ',
f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
' starts with: '+ firstLine, //but not here
'</li>');
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
};
}
</script>
<style>
</style>
</head>
<body>
<input type="file" id="files" />
<output id="list"></output>
</body>
</html>
bamboo.png (image/png) - 978701 bytes, last modified: 23/12/2013 starts with: �PNG
Очень странно,bamboo.png (image/png) - 978701 bytes, last modified: 23/12/2013 starts with: �PNG
закладки.