提问人:Federico Pavone 提问时间:7/19/2023 最后编辑:Brian Tompsett - 汤莱恩Federico Pavone 更新时间:7/22/2023 访问量:44
从 API 下载文件
Downloading a file from an API
问:
我需要下载来自 API 调用的文件,我已经尝试了几乎所有方法,最后一次尝试是使用我在 API 中收到的“文件”创建一个 blob,我该怎么做?
if(tipo_societa == "Società di Capitali"){
id_visura = document.getElementById("id_visura").value;
axios.get('https://visurecamerali.openapi.it/ordinaria-societa-capitale/' + id_visura + '/allegati', {
headers:{
'Authorization': 'Bearer ' + '{Token_Censored}'
}
})
.then ( (res) => {
data = res.data.data;
console.log(data);
/* Apri una nuova scheda con l'url */
var url = window.URL.createObjectURL(new Blob([data.file]));
var link = document.createElement('a');
link.href = url;
link.setAttribute('download', data.nome);
document.body.appendChild(link);
link.click();
})
}
API 的响应如下:
尺寸:90800
文件:“UEsDBBQAAAAIABZc81ZGgkHU4mEBAOiFAQAcABwANjRiNTE0M(it's much more long)”
nome: “64b51417f6ea811bc50ef8c9.zip”
有人可以帮我吗?
我试图制作一个 blob 来下载文件,下载开始,但下载的文件无法打开,例如损坏或类似的东西,理论上这需要下载包含 PDF 文件的 zip。
答:
1赞
Federico Pavone
7/19/2023
#1
最后,我通过指定来自 api 的字符串是 base64 解决了这个问题,我保留了下面的代码,以防其他人遇到同样的问题
data = res.data.data;
console.log(data);
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;base64,' + data.file);
element.setAttribute('download', data.nome);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
非常感谢你回答了这个问题,让我找到了解决方案^^
评论