Blob对象无法取到响应头的文件名

使用Ajax下载文件并处理
本文介绍了一种使用Ajax进行文件下载的方法,并展示了如何解析服务器返回的文件名及创建可下载链接。通过设置xhrFields及responseType属性为'blob',可以确保正确处理二进制数据,同时利用getResponseHeader获取自定义头部信息。
                    
$.ajax({
    url: url,
    type: "get",
    // data: JSON.stringify(param),
    // 向服务器发送的数据类型
    contentType: 'application/json;charset=utf-8',
    xhrFields: {
        'responseType': 'blob'
    },
    success: function (result, status, xhr) {//固定三个参数        
        resolve(result, status, xhr);
    }
}).done(function (result, status, xhr) {
    // 可通过XMLHttpRequest对象,获取响应头                        
    let filename = decodeURI(xhr.getResponseHeader('content-disposition').split(';')[1].split('=')[1]);

    let imgurl = URL.createObjectURL(new Blob([result]));//神奇的方法

    //download使元素可访问下载文件,参数就是文件名                        
    $('.attachment-wrapper').append(`<a href="${imgurl}" download=${filename}>附件${index + 1}:${filename}</a><br>`);

    //递归解决异步请求导致的文件加载顺序不一致的问题;
    recur(attachmentFileIdsArr, customsCode, ++index);
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DefinedBySaint

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值