Hiện nay tôi sử dụng một mô hình như sau để đọc 3 ký tự đầu tiên của một loạt các tập tin:html5 fileReader - làm thế nào để chỉ đọc N ký tự đầu tiên của một tệp?
var files = e.dataTransfer.files;
for (var i = 0, f; f = files[i]; i++) {
var fr = new FileReader();
fr.onload = function(e) {
var first_three_chars = e.target.result.substr(0,3);
}
fr.readAsText(f);
}
Vấn đề là tôi chỉ quan tâm đến 3 ký tự đầu tiên của tập tin, trong khi đó phương pháp này đọc toàn bộ tập tin, lãng phí rất nhiều bộ nhớ và thời gian. Làm cách nào để tôi có thể lặp lại nhanh chóng các tệp, chỉ cần xem nhanh các ký tự đầu tiên?
Chỉnh sửa: slice() là câu trả lời, cảm ơn sshen. Đây là cách tôi đã làm điều đó:
var files = e.dataTransfer.files;
for (var i = 0, f; f = files[i]; i++) {
var fr = new FileReader();
fr.onloadend = function(e) {
if (e.target.readyState == FileReader.DONE) {
var first_three_chars = e.target.result;
}
};
var blob = f.slice(0, 3);
fr.readAsText(blob);
}
Tôi nghĩ rằng mã ở đây thiếu chi tiết (nơi bạn nhận được 'file' var?) Nhưng liên kết được cung cấp là hoàn hảo. +1 –
'var file = document.getElementById ('myFile') .file [0];' –
@Noodle, Điều này có được thực hiện theo cách thực hiện không? – Pacerier