How To Save Text File Contents To Javascript Variable?
I'm trying to read a text file of over 150,000 lines of text. I want to be able to read the text file and pass it as a parameter for processFileContent. I tried it this way, but it
Solution 1:
FileReader.onload
event returns results asynchronously. You can use a callback or Promise
to return result
of FileReader
to processFileContent
. Also file
at readFile
would be event
object, not .files
property of event.target
.
functionreadFile(event) {
var file = event.target.files[0];
if (file) {
newPromise(function(resolve, reject) {
var reader = newFileReader();
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);
functionprocessFileContent(data) {
var list = data.split('\n');
...
Solution 2:
One of your problems is with scoping. You declared data
as a local variable in the onload
event handler, and tried returning it from the outer function, in which it was undefined
. To fix this, you need to move the variable declaration out of the event handler.
You also are expecting a file as an argument to your event handler it seems, however events pass Event
objects to their event handlers. To get the file, you need to get event.target.files[0]
. This should fix it.
functionreadFile(event) {
var file = event.target.files[0]; // getting the file Blobvar reader = newFileReader();
var data; // moved declaration
reader.onload = function (evt) {
data = evt.target.result;
};
reader.readAsText(file);
return data;
}
Post a Comment for "How To Save Text File Contents To Javascript Variable?"