【问题标题】:Get string Base64 from input type:file?从输入类型获取字符串 Base64:文件?
【发布时间】:2018-04-25 12:55:55
【问题描述】:

如何从输入文件 .pdf 中获取字符串 Base64。 我有这个功能,但我不返回字符串 base64。 接受的文件扩展名是 .pdf
我需要一个变量中的字符串 BASE64
我的代码:

<input type="file" id="files" name="files" multiple>

js代码

var base64 =  getBase64(document.getElementById('files').files[0])
function getBase64(file) {           
    var reader = new FileReader();   
    reader.readAsDataURL(file);  
    reader.onload = function () {  
        console.log(reader.result);  
        return(reader.result); //THIS NO RETURN NOTHING. WHY?
    };  
    reader.onerror = function (error) {  
        console.log('Error: ', error);  
    };   
}

【问题讨论】:

    标签: javascript jquery html function


    【解决方案1】:

    我测试了它,它可以工作,你必须将它添加到更改事件中,你在任何东西出现之前调用 getbase64:

    https://jsfiddle.net/ibowankenobi/fcgL3dn8/

    document.getElementsByTagName("input")[0].addEventListener("change",getBase64,false);
    
    var _file; 
    
    function getBase64() {     
                    var file = this.files[0];
                    var reader = new FileReader();   
                    reader.readAsDataURL(file);  
                    reader.onload = function () {  
                        console.log(reader.result); 
                        _file = reader.result; 
                        //don't do the below. It is pointless. Either assign the result to a variable within scope or call a callback
                        //return(reader.result); //THIS NO RETURN NOTHING. WHY?
                    };  
                    reader.onerror = function (error) {  
                        console.log('Error: ', error);  
                      };   
                }
    

    【讨论】:

    • I cach this.. Index:104 Uncaught TypeError: Cannot read property 'addEventListener' of undefined at verdetalle (Index:104) at HTMLAnchorElement.onclick var file = document.getElementById('files')[ 0].addEventListener("改变", getBase64, false);
    • 你在上面的代码中发现了这个??锚元素在哪里?
    • var file = document.getElementById('files')[0].addEventListener("change", getBase64, false);
    • 我知道出了什么问题,您使用 getElementsByTagName 来获取 ElementById。那么您需要了解 getElementById 不返回数组。所以这意味着你应该这样做: document.getElementById('files').addEventListener("change", getBase64, false);所以没有[0]
    • var file = document.getElementById('files').addEventListener("change", getBase64, false); alert(file);//见未定义
    猜你喜欢
    • 2019-10-27
    • 1970-01-01
    • 2021-10-13
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 2011-01-25
    • 2017-03-31
    相关资源
    最近更新 更多