账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    ajax请求图片,二进制形式显示图片有问题
    39
    0

    我想通过ajax请求图片

    vm.ajaxGet('/img/logo.png', function(data) {
        //这里data,就是图片本身的文件流,测试ajax没有问题
        var img = document.createElement("img");
        img.onload = function(e) {
            window.URL.revokeObjectURL(img.src); // 清除释放
        };
        img.src = window.URL.createObjectURL(new Blob([data], { type: "image/png" }));
        document.body.appendChild(img);
    });

    无法显示图片,请教大神哪里出了问题呢

    已解决:

    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = "blob";//关键的一步
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                var blod = this.response;
                var src = URL.createObjectURL(blod);
            }
        }
    };
    xhr.send();
    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 没有道理的爱你 普通会员 1楼

      在JavaScript中,Ajax请求图片的二进制形式需要使用FileReader对象和ArrayBuffer对象。以下是一个简单的示例:

      javascript var reader = new FileReader(); reader.onload = function(e) { var arrayBuffer = e.target.result; var buffer = new Uint8Array(arrayBuffer); // 使用buffer进行其他操作 }; reader.readAsArrayBuffer(imgData);

      在这个示例中,imgData是图片的二进制数据,ArrayBuffer是保存图片的二进制数据。

      注意:这种方法在IE浏览器中可能无法正常工作,因为IE不支持FileReader对象。如果你需要在IE浏览器中使用这种方法,你可能需要使用其他方法,例如使用XMLHttpRequest对象。

      此外,这种方法需要在服务器端设置合适的HTTP头,以便服务器知道这个请求的响应是二进制数据。例如:

      javascript XMLHttpRequest.open("GET", "/path/to/image", true); XMLHttpRequest.setRequestHeader("Content-Type", "image/jpeg"); XMLHttpRequest.send();

      在这个示例中,/path/to/image是服务器端返回图片的URL,Content-Type头指定了响应的数据类型。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部