vue 下载文件流怎么保留原文件名?

vue下载文件流怎么保留原文件名?

this.$axios.get(${url}/${fileName}`, {

responseType: "blob",

}).then((response) => {

//new Blob([res])中不加data就会返回下图中[objece objece]内容(少取一层)

const blob = new Blob([response.data]);

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

// 怎么保留获取原文件名?

elink.download = '文件名.xlsx';

elink.style.display = 'none';

elink.href = URL.createObjectURL(blob);

document.body.appendChild(elink);

elink.click();

URL.revokeObjectURL(elink.href); // 释放URL 对象

document.body.removeChild(elink);

}).catch((error) => {

this.$message({

message: error

});

});

elink.download 怎么获取原文件名


回答:

服务器返回的信息头 headers['content-disposition'] 里面就有文件名filename(需要服务端有返回 content-disposition 信息,如果没有返回则获取不到)。但是获取到的 filename 时转码过的,所以需要通过 decodeURIComponent() 函数解码回来。

当然,如果你是想使用你下载时候请求的文件名,可以直接使用你请求URL上面的 fileName 变量就行了。

this.$axios.get(`${url}/${fileName}`, ...)


回答:

前段时间刚写了一个文章

以上是 vue 下载文件流怎么保留原文件名? 的全部内容, 来源链接: utcz.com/p/934551.html

回到顶部