首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript返回"Undefined“

Javascript返回"Undefined“
EN

Stack Overflow用户
提问于 2018-08-09 08:57:32
回答 1查看 177关注 0票数 0

我正在尝试使用input[type=file]上传文件,并在表单提交(其中包含其他元素,如“名字”,“姓氏”等),我正在将文件转换为字符串,并将其作为JSON传递到服务器。

HTML:

代码语言:javascript
复制
<input type="file" class="form-control" id="resume" accept=".doc, .docx, .pdf" />

脚本:

代码语言:javascript
复制
var resume = document.getElementById('resume').files[0];
var result = getbase64(resume);
console.log(result); 

这将返回undefined,但是当上面的代码行调用方法时,实际方法中的console.log会记录正确的内容。

代码语言:javascript
复制
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);
    };
} 

我的问题是如何正确地将此返回类型分配给变量,以便可以将其作为字符串发送到服务器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-09 09:03:51

您的返回语句return result不会返回您所期望的内容,因为它位于事件侦听器中。也就是说,函数getBase64的输出将是Undefined。当load事件发生时,您可以简单地传递一个回调函数来传输文件。

代码语言:javascript
复制
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);
    };
} 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51757471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档