我已经使用下面的代码下载了一个csv文件
let url = "https://test.com/test/auth/files/download/86ccc28c-383f-4c84-ac0d-61478da2f62c/e60f7709-288a-424c-bb13-9ff4bb60bec1?platform=HTMLCLIENT&source=855ca910c9d347b69403cf1791bab97c&linktoken=be50f537833bf693d9e0a3ecb8432159db966ee6"
window.open(url);
以上代码在safari浏览器以外的所有浏览器中均有效。
我已完成以下工作,
let a = document.createElement('a');
a.target = '_self';
a.href = url;
a.download = 'test.csv';
document.body.appendChild(a);
a.click();
,它将在新标签页中打开文件,而不是在野生动物园中下载。有人可以帮助解决这个问题吗?
答案 0 :(得分:0)
您可以发布任何HTML吗?我已经成功通过使用定位标记中的download属性来强制下载文件。
<a href="http://www.this.link.com/csv_1.csv" download...
答案 1 :(得分:0)
参考:https://bugs.webkit.org/show_bug.cgi?id=167341
https://github.com/dotnetCarpenter/FileReader_Chrome
提取为blob并转换为datauri。不适合大文件,因为整个base64编码的文件必须存储在内存中。
fetch(url, {
method: 'get',
})
.then(response => response.blob())
.then(blob => {
const fileName = 'filename.csv'
if (navigator.msSaveBlob) { // IE11 and Edge 17-
navigator.msSaveBlob(blob, fileName)
} else { // every other browser
const reader = new FileReader()
reader.onloadend = () => {
const a = document.createElement("a")
a.href = reader.result
a.style.display = 'none'
a.download = fileName
document.body.appendChild(a)
a.click()
a.parentNode.removeChild(a)
}
reader.readAsDataURL(blob)
}
})