javascript - 在javascript中将二进制形式转换为base64字符串

标签 javascript

<分区>

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

enter image description here

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

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

能否请你帮我看看如何将数据的二进制形式转换为base64编码的字符串?

编辑 最终,我想用我无法做到的数据在网页上显示图像

最佳答案

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

将 URL 转换为 base64 的示例(使用 Canvas 或 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();
}

转换 fiddle :

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

关于javascript - 在javascript中将二进制形式转换为base64字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37326065/

相关文章:

javascript - 在 htmlUnit 中执行 Javascript

javascript - Vue 中的井号 (#) 是什么意思?

javascript - 如何获取 DIV 的值

javascript - Html 和 javascript 框认证

javascript - SignalR 核心 - 尝试将 clientId 传递给 Hub,无法弄清楚如何接收

javascript - 使用 CryptoJs 加密并使用 Phalcon 解密

javascript - 如何从页面中的jquery调用angular js函数 Controller

javascript - 如果我不知道键名,如何在 javascript 中遍历键/值对

javascript - jquery如何处理点击

javascript - 用另一个 HTML 文件替换页面上的内容的选项卡