Naposledy aktivní 1729153378

使用Blob下载:图片、pdf 等默认被浏览器新标签页预览的文件

doracoin revidoval tento gist 1729153378. Přejít na revizi

Žádné změny

doracoin revidoval tento gist 1728987309. Přejít na revizi

1 file changed, 48 insertions

blobdownload.js(vytvořil soubor)

@@ -0,0 +1,48 @@
1 + import axios from "axios";
2 +
3 + /**
4 + * 使用Blob下载图片、pdf等可被浏览器预览的文件格式
5 + * @param fileUrl 文件链接
6 + * @param fileSaveName 文件保存名称
7 + */
8 + function downFile(fileUrl, fileSaveName) {
9 + console.log("下载", fileUrl);
10 +
11 + // 发送GET请求,将响应类型设置为blob
12 + axios
13 + .get(fileUrl, {
14 + responseType: "blob" // 重要,这告诉axios返回的数据类型为Blob
15 + })
16 + .then(response => {
17 + // response.data 是一个Blob对象,包含了文件的二进制数据
18 + console.log("response", response);
19 + const blob = response.data;
20 +
21 + // 如果你需要使用这个Blob对象,比如将其转换为URL,可以这样做:
22 + const fileBlobUrl = window.URL.createObjectURL(blob);
23 + console.log(fileBlobUrl);
24 + downloadImage(fileBlobUrl, fileSaveName);
25 + // 这里你可以使用imageUrl,例如设置为img标签的src属性来显示图片
26 + })
27 + .catch(error => {
28 + // 处理错误情况
29 + console.error("转换图片URL到Blob时出错:", error);
30 + });
31 + }
32 +
33 + function downloadImage(blobUrl, saveName) {
34 + // 创建一个<a>元素
35 + var link = document.createElement("a");
36 + link.href = blobUrl;
37 + // 重要:链接有 download 属性,浏览器才会触发保存文件的动作,否则还是新标签页打开预览
38 + link.download = saveName; // 指定下载的文件名
39 +
40 + // 将<a>元素添加到DOM中(不显示)
41 + document.body.appendChild(link);
42 +
43 + // 触发点击事件
44 + link.click();
45 +
46 + // 移除<a>元素
47 + document.body.removeChild(link);
48 + }
Novější Starší