0
我正在嘗試將Base64編碼圖像添加到字符串數組。使用與反應的自舉的FormControl創建的文件輸入格式:Javascript base64編碼函數返回undefined
<FormControl
type="file"
values={this.state.files}
multiple
onChange={this.addImage.bind(this)}
/>
我調用這個函數:
addImage(event) {
var newArr = [];
for(var i=0; i<event.target.files.length; i++) {
newArr.push(this.getBase64(event.target.files[i])));
}
this.setState({ files: newArr });
}
編碼圖像的功能如下:
getBase64(file) {
var reader = new FileReader();
reader.onloadend = function() {
return reader.result
}
reader.readAsDataURL(file);
}
當addImage()函數調用getBase64()函數返回值爲undefined。我相信這是由getBase64()函數運行所引起的。當我添加一個console.log行來吐出reader.result時,base64字符串會正確輸出到控制檯,但返回的值仍然顯然是相同的。
這裏發生了什麼,如何才能正確返回實際的base64字符串?
你可以看到有沒有'return'在'getBase64'功能異步返回,對不對? –
@JaromandaX在'loBandy'事件處理程序 – guest271314
@ guest271314內的'getBase64'函數中有'return'語句,你可以看到'getBase64'函數中沒有'return',對吧? –