当前位置: 首页 > 面试题库 >

使用POST下载Axios Excel文件会导致文件损坏

潘弘博
2023-03-14
问题内容

我以前使用Axios下载GET端点提供的文件。端点已更改,现在是POST,但是不需要参数。我正在更新原始的下载方法,但是返回了损坏的文件。

downloadTemplate() {
        axios.post(DOWNLOAD_TEMPLATE_URL,
            {
                responseType: 'blob',
                headers: {
                    'Content-Disposition': "attachment; filename=template.xlsx",
                    'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
                }
            })
            .then((response) => {
                const url = window.URL.createObjectURL(new Blob([response.data]));
                const link = document.createElement('a');
                link.href = url;
                link.setAttribute('download', 'template.xlsx');
                document.body.appendChild(link);
                link.click();
            })
            .catch((error) => console.log(error));
    }

我不知道,如果问题出在responseTypeheaders或如何响应的处理或全部的上方。到目前为止,我已经尝试了各种选择,但没有运气。任何建议将不胜感激!

我已经能够使用Postman下载文件,所以我知道端点提供的文件很好。我只是无法在我的React代码中理清参数来做到这一点。


问题答案:

终于成功了!该post问题的代码块中的语法不正确,并且也将其更改responseType为“ arraybuffer”。

下面的工作示例:

downloadTemplate() {
    axios.post(DOWNLOAD_TEMPLATE_URL, null,
        {
            headers:
            {
                'Content-Disposition': "attachment; filename=template.xlsx",
                'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
            },
            responseType: 'arraybuffer',
        }
    ).then((response) => {
        const url = window.URL.createObjectURL(new Blob([response.data]));
        const link = document.createElement('a');
        link.href = url;
        link.setAttribute('download', 'template.xlsx');
        document.body.appendChild(link);
        link.click();
    })
        .catch((error) => console.log(error));
}


 类似资料:
  • 我编写的下载文件的方法总是产生损坏的文件。 我通过adb访问这些文件,将它们传输到我的sccard,在那里我看到它们似乎有合适的大小,但没有根据例如Linux命令的类型。 你知道丢失了什么以及如何修复它吗? 谢谢。 代码的简单版本(但错误相同) 日志:< code > file . length:2485394 | content length:1399242 问题是,我从我的API单例中获得了,

  • 问题内容: 我正在使用角度$ http从服务器下载文件。文件类型可以不同。我应该设置请求标头以进行身份​​验证。下载完成后,文件已损坏!这是我在客户端保存文件的代码: 问题答案: 我最终通过将以下配置添加到ajax请求中解决了该问题: 并将Blob类型更改为 “应用程序/八位字节流”

  • 我正在尝试重命名现有XLSX文件的标题。这个想法是使用一个excel文件将数据从XML导出到excel,并在某个用户进行调整后重新导入XML。 目前,我们已经用Excel创建了一个“模板”xlsx-sheet,其中已经包含了一个可排序表(poi中的XSSFTable)和一个到XSD-Source的映射。然后通过POI进行导入,将XML数据映射到其中并保存。为了根据用户调整工作表,我们希望将现有表的

  • 我正在编写一个概念的演示证明,将电子签名添加到现有的pdf中。我遇到了一个奇怪的问题,我不明白。似乎将签名添加到某些文档可以正常工作,而将签名添加到其他文档则不行,并且会生成Adobe Reader无法打开的损坏文件。 这是我的代码: 请看这里的文件。Infile1.pdf我不能签名,但Infile2.pdf签名很好。Outfile1.pdf是损坏的文件。https://app.box.com/s

  • 我试图通过调用Spring RESTendpoint在Reactjs中下载Excel文件,但我遇到了损坏文件的问题。 回应呼叫... Spring控制器…… 服务 当我执行上面的代码,我得到一个Excel文件o. k……但看response.data看起来像…… 嘎嘎��由于数据不可读,无法打开文件。打开服务器上创建的文件是可以的 欢迎任何想法 干杯

  • 由此下载的文件大小几乎相同,但在某些行中有所不同。每个答案都指向二进制文件类型。但这没用。有人对这个问题有什么想法吗?