[英]How to read the contents of a XML file and save it in a javascript variable as string?
[英]How to save text file contents to Javascript variable?
我正在嘗試閱讀超過150,000行文本的文本文件。 我希望能夠讀取文本文件並將其作為processFileContent的參數傳遞。
我試過這種方式,但它不起作用。 此外,對於這樣的大數據,還有更好的方法嗎?
function readFile(file) {
var reader = new FileReader();
reader.onload = function (evt) {
var data = evt.target.result;
};
reader.readAsText(file);
return data;
}
document.getElementById('file').addEventListener('change', readFile, false);
var data = readFile();
function processFileContent(data) {
var list = data.split('\n');
...
FileReader.onload
事件異步返回結果。 您可以使用回調或Promise
將FileReader
result
返回到processFileContent
。 readFile
file
也是event
對象,而不是event.target
.files
屬性。
function readFile(event) {
var file = event.target.files[0];
if (file) {
new Promise(function(resolve, reject) {
var reader = new FileReader();
reader.onload = function (evt) {
resolve(evt.target.result);
};
reader.readAsText(file);
reader.onerror = reject;
})
.then(processFileContent)
.catch(function(err) {
console.log(err)
});
}
}
document.getElementById('file')
.addEventListener('change', readFile, false);
function processFileContent(data) {
var list = data.split('\n');
...
您的一個問題是范圍界定。 你宣布data
作為一個局部變量onload
事件處理程序,並試圖從外部函數,在它被返回它undefined
。 要解決此問題,您需要將變量聲明移出事件處理程序。
您也期望將文件作為事件處理程序的參數,但是事件會將Event
對象傳遞給它們的事件處理程序。 要獲取該文件,您需要獲取event.target.files[0]
。 這應該解決它。
function readFile(event) {
var file = event.target.files[0]; // getting the file Blob
var reader = new FileReader();
var data; // moved declaration
reader.onload = function (evt) {
data = evt.target.result;
};
reader.readAsText(file);
return data;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.