jq インターフェースは、ページの表示とダウンロードのためのファイル ストリームを返します。

ファイル フローの例は次のとおりです。
ここに画像の説明を挿入

encodeURIComponent: URLパラメータの「&」が切り捨てられる問題を解決

var xhr = new XMLHttpRequest();
var scene = encodeURIComponent("cid="+team_channel_id+"&groupType=0&type=team")
xhr.open('GET', market_url + "/admin/activity/url_list?scene="+scene+"&width=280&envVersion="+env_version, true);    // 也可以使用POST方式,根据接口
xhr.responseType = "blob";  // 返回类型blob
xhr.onload = function () {
    // 请求完成
    if (this.status === 200) {
        // 返回200
        var blob = this.response;
        var reader = new FileReader();
        reader.readAsDataURL(blob);  // 转换为base64
        reader.onload = function (e) {
            console.log(e.target.result)
            $("#imgQrcode_bind").attr("src",e.target.result);
			
			//下载图片  base64转blob
			var aLink = document.createElement("a"); // 创建一个a标签
            var blob = base64ToBlob(e.target.result);
            var event = document.createEvent("HTMLEvents");
            event.initEvent("click", true, true);
            aLink.download = 'qrcode.png'; // 使用时间戳给文件命名
            aLink.href = URL.createObjectURL(blob);
            aLink.click();
        }
    }else{
        $(".hint").text('加载失败!');
        $('.prm-mod').modal();
    }
};
// 发送ajax请求
xhr.send()

// base64转Blob对象
function base64ToBlob(code) {
    var parts = code.split(";base64,");
    var contentType = parts[0].split(":")[1];
    var raw = window.atob(parts[1]);
    var rawLength = raw.length;
    var uint8Array = new Uint8Array(rawLength);
    for (var i = 0; i < rawLength; i++) {
        uint8Array[i] = raw.charCodeAt(i);
    }
    return new Blob([uint8Array], {type: contentType});
}

Supongo que te gusta

Origin blog.csdn.net/qq_43384836/article/details/127276869
Recomendado
Clasificación