Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在React中下载编码资产(任何类型的文件)?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何在React中下载编码资产(任何类型的文件)?

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

在我的React应用程序中,我有一个通过发送文件URL来获取文件的API。收到文件后,我需要将其作为原始文件下载。这应该适用于任何类型的文件。当我调用API时,我从后端获取文件的编码文本。我正在使用react file saver模块下载文件问题是,模块下载的是文本文件而不是真实文件。

这就是GETAPI响应的外观

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);
            })
    }