如何重命名下载文件
Posted on Wed, 25 Dec 2024 16:15:56 +0800 by LiangMingJian
需求
通常情况下,服务器后端存储文件时,会使用唯一 ID 将文件重命名,避免重名文件冲突。此时,如果用户直接下载文件,下载下来的文件名将会是唯一 ID,用户难以识别文件的真实内容。因此,需要在下载文件后,将文件名从唯一 ID 修改为文件原本的名字(这些名字往往存放在服务器数据库中)。
实现
将下载的文件读取为文件流 Blob,在保存文件流时进行重命名。
// 下载文件,并获得文件流
function getBlob(url) {
return new Promise((resolve) => {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function() {
if (xhr.status === 200) {
resolve(xhr.response);
}else{
resolve(0);
}
};
xhr.send();
})
}
// 重命名并保存文件流
function saveAs(blob, file_name) {
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob)
link.download = file_name;
link.target="_blank";
link.click();
}