我正在尝试使用input[type=file]上传文件,并在表单提交(其中包含其他元素,如“名字”,“姓氏”等),我正在将文件转换为字符串,并将其作为JSON传递到服务器。
HTML:
<input type="file" class="form-control" id="resume" accept=".doc, .docx, .pdf" />脚本:
var resume = document.getElementById('resume').files[0];
var result = getbase64(resume);
console.log(result); 这将返回undefined,但是当上面的代码行调用方法时,实际方法中的console.log会记录正确的内容。
function getBase64(file) {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
var result = reader.result;
console.log('here----> '+result);
return result;
};
reader.onerror = function (error) {
console.log('Error: ', error);
};
} 我的问题是如何正确地将此返回类型分配给变量,以便可以将其作为字符串发送到服务器。
发布于 2018-08-09 09:03:51
您的返回语句return result不会返回您所期望的内容,因为它位于事件侦听器中。也就是说,函数getBase64的输出将是Undefined。当load事件发生时,您可以简单地传递一个回调函数来传输文件。
function getBase64(file, transferMyFile) {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
var result = reader.result;
console.log('here----> '+result);
transferMyFile(result)
/* Or just transfer it here */
};
reader.onerror = function (error) {
console.log('Error: ', error);
};
} https://stackoverflow.com/questions/51757471
复制相似问题