js 通过url 转blob下载文件

本文介绍了如何使用JavaScript通过fetch API获取URL并转换为Blob对象,进而实现文件的下载,适合前端开发者学习文件下载操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js 通过url 转blob下载文件

<!DOCTYPE html>
    <html lang="en">

    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
    </head>

    <body>
        <button onclick="xhrequest()">下载</button>
        <script>
            let downloadBlob = (blob, fileName) => {
                try {
                    const href = window.URL.createObjectURL(blob); //创建下载的链接
                    if (window.navigator.msSaveBlob) {
                        window.navigator.msSaveBlob(blob, fileName);
                    } else {
                        // 谷歌浏览器 创建a标签 添加download属性下载
                        const downloadElement = document.createElement("a");
                        downloadElement.href = href;
                        downloadElement.target = "_blank";
                        downloadElement.download = fileName;
                        document.body.appendChild(downloadElement);
                        downloadElement.click(); // 点击下载
                        document.body.removeChild(downloadElement); // 下载完成移除元素
                        window.URL.revokeObjectURL(href); // 释放掉blob对象
                    }
                } catch (e) {
                    console.log("下载失败");
                }
            };

            async function xhrequest(callback) {
                let url =
                    "https://1252524126.vod2.myqcloud.com/2919df88vodtranscq1252524126/edee603b3701925925677178599/v.f1010.mp3";
                let data = await fetch(url)
                    .then((response) => response.blob())
                    .then((res) => {
                        console.log(res);
                        let blod = new Blob([res]);
                        let name = "1.mp3";
                        downloadBlob(blod, name);
                    });
                return data;
            }
        </script>
    </body>

    </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值