Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用FileReader和Promises将文件转换为base64_Javascript - Fatal编程技术网

Javascript 使用FileReader和Promises将文件转换为base64

Javascript 使用FileReader和Promises将文件转换为base64,javascript,Javascript,我编写这个函数是为了使用Promissions将上传的文件转换为base64并尝试返回base64字符串。收到HTTP错误200,我不确定它是否返回正确的字符串 function getBase64(file) { var deferred = $.Deferred(); var reader = new FileReader(); reader.onload = function (event) { let base64String = reader.r

我编写这个函数是为了使用Promissions将上传的文件转换为base64并尝试返回base64字符串。收到HTTP错误200,我不确定它是否返回正确的字符串

function getBase64(file) {
    var deferred = $.Deferred();
    var reader = new FileReader();
    reader.onload = function (event) {
        let base64String = reader.result.split(',').pop();
        deferred.resolve(base64String);
    };
    reader.readAsDataURL(file);
    return deferred.promise();
};

您可以使用包
promise文件读取器


只是一个建议,不要将jQuery用作承诺库。既然承诺在JS中是标准的(即使不是在您目标的版本中),那么您也可以使用符合标准的东西,比如。我也不确定什么是“HTTP错误200”。200是成功http请求的状态码,我没有看到上面有任何http请求。@barry johnson我将getBase64函数调用到一个var img中,该函数将被推特(使用Codebird)。当我发布tweet时,我得到HTTP错误200。。。在这种情况下,我如何使用Bluebird?再说一次:200不是一个错误。200是HTTP成功/正常状态代码。@barry johnson Oh抱歉。。。我正在使用Codebird发布到Twitter,我在HTTP 200中遇到了一个错误:“无法验证您的身份。”这只是在我开始使用promise时发生的……对不起,我无法帮助您解决Codebird/PHP问题。你应该考虑重新提出你的问题。如果您只是天真地更改了
getBase64
函数以在返回实际base64字符串时返回承诺,并且没有更改其调用方式或操作结果,那么a)您可能正在尝试在发送字符串时发送承诺对象,和b)在触发onload函数并解决承诺之前,您可能/可能会执行该代码。