Javascript 如何在React中下载编码资产(任何类型的文件)?
在我的React应用程序中,我有一个通过发送文件URL来获取文件的API。收到文件后,我需要将其作为原始文件下载。这应该适用于任何类型的文件。当我调用API时,我从后端获取文件的编码文本。我正在使用react file saver模块下载文件问题是,模块下载的是文本文件而不是真实文件。 这就是GETAPI响应的外观Javascript 如何在React中下载编码资产(任何类型的文件)?,javascript,reactjs,Javascript,Reactjs,在我的React应用程序中,我有一个通过发送文件URL来获取文件的API。收到文件后,我需要将其作为原始文件下载。这应该适用于任何类型的文件。当我调用API时,我从后端获取文件的编码文本。我正在使用react file saver模块下载文件问题是,模块下载的是文本文件而不是真实文件。 这就是GETAPI响应的外观 IHDRÄõWìã¢sRGB®Îé–eXIfMM*>F(‡iNÄ õASCIIScreenshotÞK| pHYs%%IR$ðÖiTXtXML:com.adobe.xmp
IHDRÄõWìã¢sRGB®Îé–eXIfMM*>F(‡iNÄ õASCIIScreenshotÞK| pHYs%%IR$ðÖiTXtXML:com.adobe.xmp<x:xmpmeta xmlns:x="........
如何解决这个问题?在File对象的第二个参数中,您显式地将类型设置为type:“text/plain;charset=utf-8”。尝试应用正确的类型,然后重试again@maaajo即使我为PNG设置了
{type:“image/*”}
,文件仍然以文本OK的形式下载。然后我认为File对象有问题。你为什么要这样做?也许您可以尝试直接从响应中下载文件,如下所示:saveAs(res.blob(),filename)
?@maaajo然后它说,res.blob不是函数
很抱歉,没有注意到您正在使用axios作为提取函数。然后,您可以尝试将responseType:'blob'
添加到API.get的第二个参数对象中,并尝试saveAs(res,filename)
,因此:API.get(`/main/download?fileUrl=${url}',{headers:{Accept':'application/*}',responseType:'blob})。然后(res=>{saveAs(res res yourFileName);})
在File对象的第二个参数中,您显式地将类型设置为type:“text/plain;charset=utf-8”。尝试应用正确的类型,然后重试again@maaajo即使我为PNG设置了{type:“image/*”}
,文件仍然以文本OK的形式下载。然后我认为File对象有问题。你为什么要这样做?也许您可以尝试直接从响应中下载文件,如下所示:saveAs(res.blob(),filename)
?@maaajo然后它说,res.blob不是函数
很抱歉,没有注意到您正在使用axios作为提取函数。然后,您可以尝试将responseType:'blob'
添加到API.get的第二个参数对象中,并尝试saveAs(res,filename)
,因此:API.get(`/main/download?fileUrl=${url}',{headers:{Accept':'application/*}',responseType:'blob})。然后(res=>{saveAs(res res yourFileName);})
import { saveAs } from 'file-saver';
downloadFile = (url) => {
API.get(`/main/download?fileUrl=${url}`, { headers: { 'Accept': 'application/*' } })
.then(res => {
var file = new File([res.data], { type: "text/plain;charset=utf-8" });
saveAs(file);
})
.catch((err) => {
console.error("AXIOS ERROR: ", err);
})
}