纯前端模板文件下载如何精确控制下载的文件名字

在写项目的时候,遇到了一个需要把给定的文件放到页面中,然后用户点击下载按钮将这个文件下载下来,我将其存入了云服务之中(这个云服务是不会清空的,内存又不值几个钱),但是当我下载的时候,下载的文件名是存到服务器地址的路径名,出现了这个问题。 然后我用a标签的dowmLoad属性指定文件下载名字,依然没有效果。

从网上一搜,原来是服务器发送的请求头里控制了这个属性,让浏览器觉得自己设置的没有服务器给的靠谱。

 方法!!!!

这个时候,我们可以通过Blob对象和URL.createObjectURL()来实现,就是先将他搞过来成为前端的数据,然后前端用这个数据生成一个文件,最后给他赋予我们想给他的名字,就成功的实现了。

const download = () => {
	const fileUrl = "https://***************************************/1700023798306.docx";
	const fileName = "测试名字.docx";

	fetch(fileUrl)
		.then(response => response.blob())
		.then(blob => {
			// 创建一个虚拟的下载链接
			const link = document.createElement("a");
			link.href = URL.createObjectURL(blob);

			// 设置下载属性,并指定文件名
			link.download = fileName;

			// 将链接添加到文档中,并触发点击事件
			document.body.appendChild(link);
			link.click();

			// 移除链接
			document.body.removeChild(link);
		});
};

 

划重点

这个方法有点新!!可能旧版本的浏览器兼容性没有那么好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Web阿成

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

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

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

打赏作者

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

抵扣说明:

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

余额充值