首页 文章

在javascript中将二进制格式转换为base64字符串[重复]

提问于
浏览
2

这个问题在这里已有答案:

我正在查询salesforce的一些附件数据,它以二进制格式返回数据 .

enter image description here

我试图将它转换为base64,但到目前为止我还是很不成功 . 我尝试了 btoa() 方法,但它返回 the The string to be encoded contains characters outside of the Latin1 range. 错误 .

我尝试使用fileReader方法,即 readAsDataURL() ,它返回base64字符串,但不幸的是,它不代表图像 .

请你帮我解决一下如何将数据的二进制形式转换为base64encoded字符串?

Edit 最终,我想在网页上显示我正在获取的数据,我无法做到这一点

1 回答

  • 2

    如果要从服务器检索该图像,则可以选择从服务器转换为base64(并将其准备好提供给客户端),或者需要从服务器传递图像的URL,然后读取并转换为来自客户端javascript的base64 . 但是如果从服务器到客户端检索该二进制文件,客户端将无法解析它,因为数据因错误的发送方法而损坏 .

    Example converting a URL to base64 (with Canvas or FileReader):

    function convertImgToDataURLviaCanvas(url){
        var img = new Image();
        img.crossOrigin = 'Anonymous';
        img.onload = function(){
            var canvas = document.createElement('CANVAS');
            var ctx = canvas.getContext('2d');
            var dataURL;
            canvas.height = this.height;
            canvas.width = this.width;
            ctx.drawImage(this, 0, 0);
            dataURL = canvas.toDataURL("image/png");
            canvas = null; 
        };
        img.src = url;
    }
    
    function convertFileToDataURLviaFileReader(url){
        var xhr = new XMLHttpRequest();
        xhr.responseType = 'blob';
        xhr.onload = function() {
            var reader  = new FileReader();
            reader.onloadend = function () {
                console.log(reader.result);
            }
            reader.readAsDataURL(xhr.response);
        };
        xhr.open('GET', url);
        xhr.send();
    }
    

    Conversion Fiddle:

    http://jsfiddle.net/handtrix/yvq5y/

相关问题