Filereader 输出保存到变量
Filereader output saved to variable
想请教各位,如何将JavaScript中FileReader的输出保存到一个变量中,或者使函数FileReaderreturn输出在哪里
这里还有一点代码:
HTML
<input type='file' id='inputFile'>
<button id='btn'>Save</button>
JAVASCRIPT
function imgToBase64(file_input) {
if (file_input.files && file_input.files[0]) {
var fileReader = new FileReader();
fileReader.onload = function (event) {
result = event.target.result;
return result // ???
};
fileReader.readAsDataURL(file_input.files[0]);
}
}
parameter = document.getElementById('inputFile');
btn = document.getElementById('btn');
btn.onclick = function() {
variable = imgToBase64(parameter); //in this variable I would like to store the result from that function
}
我发现 FileReader 是异步的,我需要一个回调或 smth,但我不完全明白该怎么做。
谢谢
您可以使用 AngularJS 的 $q promises 来获得结果。只要确保在创建 imgToBase64 函数的任何地方注入 $q 即可。
function imgToBase64(file_input) {
var deferred = $q.defer();
if (file_input.files && file_input.files[0]) {
var fileReader = new FileReader();
fileReader.onload = function (event) {
result = event.target.result;
deferred.resolve(result);
};
fileReader.readAsDataURL(file_input.files[0]);
}
return deferred.promise;
}
parameter = document.getElementById('inputFile');
btn = document.getElementById('btn');
btn.onclick = function() {
imgToBase64(parameter).then(function (result) {
variable = result;
});
}
想请教各位,如何将JavaScript中FileReader的输出保存到一个变量中,或者使函数FileReaderreturn输出在哪里
这里还有一点代码:
HTML
<input type='file' id='inputFile'>
<button id='btn'>Save</button>
JAVASCRIPT
function imgToBase64(file_input) {
if (file_input.files && file_input.files[0]) {
var fileReader = new FileReader();
fileReader.onload = function (event) {
result = event.target.result;
return result // ???
};
fileReader.readAsDataURL(file_input.files[0]);
}
}
parameter = document.getElementById('inputFile');
btn = document.getElementById('btn');
btn.onclick = function() {
variable = imgToBase64(parameter); //in this variable I would like to store the result from that function
}
我发现 FileReader 是异步的,我需要一个回调或 smth,但我不完全明白该怎么做。
谢谢
您可以使用 AngularJS 的 $q promises 来获得结果。只要确保在创建 imgToBase64 函数的任何地方注入 $q 即可。
function imgToBase64(file_input) {
var deferred = $q.defer();
if (file_input.files && file_input.files[0]) {
var fileReader = new FileReader();
fileReader.onload = function (event) {
result = event.target.result;
deferred.resolve(result);
};
fileReader.readAsDataURL(file_input.files[0]);
}
return deferred.promise;
}
parameter = document.getElementById('inputFile');
btn = document.getElementById('btn');
btn.onclick = function() {
imgToBase64(parameter).then(function (result) {
variable = result;
});
}