解决pdf,png等浏览器自动打开,而不是下载问题(多文件)

/**

 * @description: 下载文件

 * @return {data}

 */

//url:下载地址,flieName:文件名,type:格式

function fileLinkToStreamDownload(url, fileName, type) {

    //检验是不是地址HTTPS://....

    let reg = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\/])+$/;

    if (!reg.test(url)) {

        throw new Error("传入参数不合法,不是标准的文件链接");

    } else {

        //建立原生xhr调接口

        let xhr = new XMLHttpRequest();

        xhr.open('get', url, true);

        xhr.setRequestHeader('Content-Type', `application/${type}`);

        xhr.responseType = "blob";

        xhr.onload = function () {

            if (this.status == 200) {

                //接受二进制文件流

                console.log(this)

                var blob = this.response;

                const blobUrl = window.URL.createObjectURL(blob);

                // 这里的文件名根据实际情况从响应头或者url里获取

                const a = document.createElement('a');

                a.href = blobUrl;

                a.download = fileName;

                a.click();

                window.URL.revokeObjectURL(blobUrl);

            }

        }

        xhr.send();

    }

}

/**

 * @description:点击下载事件

 * @return {*}

 */

function downloadLIst() {

 //downloads为数组 里面存了要下载的pdf,这里做了循环就是多文件下载,不做吧for去掉就可以

    for (let i = 0; i < downloads.length; i++) {

            var url = downloads[i];

            //name为文件的名字

            var name = "flie"+new Date().getTime();

            fileLinkToStreamDownload(url, name, 'pdf')

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值