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

在反应中下载文件

上官波鸿
2023-03-14
问题内容

我有一个使用Laravel创建的Restful API,如下所示:

http://127.0.0.1:8000/api/file/pdf/{id}

这是我的下载代码:

public function pdfDownload($id){
       $pdf = Cv::findOrfail($id);
       return Storage::download('public/pdf/'.$pdf->pdf);
    }

它可以在邮递员中使用,也可以在浏览器中使用,它可以直接下载文件,但是使用react.js时,它不起作用,这是我在react中的代码:

pdfDownload = (id) => {
        fetch(' http://127.0.0.1:8000/api/file/pdf/' + id, {
            method: 'get',
            headers: {
                Accept: 'application/octet-stream',
                'Content-Type': 'application/octet-stream'
            }
        }).then((res) => res.json());
    };

我在按钮中这样调用此函数:

<Button color="primary" onClick={() => this.pdfDownload(data.id)}>
                                            Download
                                        </Button>

ID已更正,我确保从这开始,我的问题是单击此按钮时如何下载文件。


问题答案:

XHR调用无法触发文件下载,这是浏览器处理文件的方式。您将必须自己使用javascript代码模仿文件下载,如下所示:

参考

const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'file.pdf');
document.body.appendChild(link);
link.click();

或者,如果您不介意额外的依赖关系,请使用File Saver程序包。

FileSaver Npm



 类似资料:
  • 我使用Laravel创建了一个Restful API,该API如下: 这是我的下载代码: 它在邮递员中工作,也在浏览器中工作,直接下载文件,但使用react。js,它不工作,这是我在react中的代码: 我在按钮中调用这个函数,如下所示: id已更正,我由此确定,我的问题是单击此按钮时如何下载文件。。丹。。。

  • 我想把一个示例xlsx文件放在我的公用文件夹(react项目)中,其他人可以下载这个文件。 我该怎么做?

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

  • 下载应用没有反应每个软件都这样 一会就自动结束了

  • 我已经创建了一个webview,并向其中添加了下载监听器。当我在应用程序中下载文件时,它将文件存储在应用程序包中,而不是公共下载文件夹中。

  • 问题内容: 我正在使用通过上下文传递的函数。 现在我用。这可行。 如果我需要来自两个不同父组件的函数,该怎么办? 问题答案: 您仍然可以通过16.3 Context API来使用子级功能消费者节点,这是React文档建议的做法: 要在组件的上下文中使用函数,通常将组件包装在HOC中,以便将上下文作为prop传递: 如果您正在运行React 16.8+,则还可以使用钩子更干净地执行此操作,而无需使用

  • 我正在使用Postman测试一个视图,该视图应该允许用户下载excel文件。这是视图。。 问题是,当我测试这个视图时,我无法从postman那里获得下载提示。相反,我从邮递员的回复中得到了损坏的数据。以下是一个示例输出: 为什么我不能下载文件?我错过了什么吗?

  • 我正在使用react csv将json下载到csv。但它会在“ex.”之后破坏细胞。, {a:"Lorem ipsum dolor sit amet,"consecte ur"adipiscing elit"b:"20", c:"1/2/2020", d:"ok"} 所以供奉后细胞会破裂。