如 : 服务端返回的下载地址为: http://example.com/file.txt 前端这时候如果直接拿来window.open('http://example.com/file.txt'), 那么浏览器的下载的文件名则默认为 file.txt。 所以, 需要模拟通过点击 a标签的小技巧来完成文件名的转换。 代码如下:
function downloadFile() {
var fileUrl = 'http://example.com/file.txt'; // 文件的URL
var fileName = 'new_file.txt'; // 新的文件名
var xhr = new XMLHttpRequest();
xhr.open('GET', fileUrl, true);
xhr.responseType = 'blob';
xhr.onload = function() {
if (xhr.status === 200) {
var blob = xhr.response;
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
link.click();
}
};
xhr.send();
}
这时下载下来的文件则是download的属性值 'new_file.txt'。
END!