当前位置: 首页 > 知识库问答 >
问题:

如何在react Js中从服务器位置下载文件

司徒焕
2023-03-14

在下面的onclick事件中,我点击API获取文件路径,然后将该文件路径传递给download方法----

onClick={event => 
                    { event.preventDefault();this.handleDownloadDoc('downloadAPI')}}> 

下载方法为:-

handleDownloadDoc = (function (fileName) {    
    var a = window.createElement("a"); 
    window.body.appendChild(a);
    a.style = "display: none";
    return function (fileName) {
        var json = JSON.stringify(fileName),
            blob = new Blob([json], {type: "text/stream"}),
            url = window.URL.createObjectURL(blob);
        a.href = url;
        a.download = fileName;
        a.click();
        window.URL.revokeObjectURL(url);
    };
}());

上面的代码我得到错误,因为不创建元素。请帮忙解决这个问题。

共有2个答案

封景曜
2023-03-14

>

您不需要在渲染方法内创建箭头函数

下面的工作代码和codesandbox链接:-

import React from "react";
import ReactDOM from "react-dom";

class App extends React.Component {
  handleDownloadDoc = fileName => e => {
    // Downloads the file
    const link = document.createElement("a");
    link.download = `${fileName}.txt`;
    const blob = new Blob(["Hello, world!"], { type: "text/plain" });
    link.href = URL.createObjectURL(blob);
    link.click();
    URL.revokeObjectURL(link.href);

    // Opens in new window
    // const blob = new Blob(["Hello, world!"], { type: "text/plain" });
    // const fileURL = URL.createObjectURL(blob);
    // window.open(fileURL);
  };
  render() {
    return (
      <div className="App">
        <button onClick={this.handleDownloadDoc("downloadApi")}>
          Download
        </button>
      </div>
    );
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

希望有帮助!!!

闻深
2023-03-14

以下是从服务器下载文件的示例:-

import React from 'react';
import './download.css';

class DownloadFile extends React.Component {

    constructor(props) {
        super(props);
    }

    downloadEmployeeData = () => {
        fetch('http://localhost:8080/employees/download')
            .then(response => {
                response.blob().then(blob => {
                    let url = window.URL.createObjectURL(blob);
                    let a = document.createElement('a');
                    a.href = url;
                    a.download = 'employees.json';
                    a.click();
                });
                //window.location.href = response.url;
        });
    }

    render() {
        return (
            <div id="container">
                <h1>Download File using React App</h1>
                <h3>Download Employee Data using Button</h3>
                <button onClick={this.downloadEmployeeData}>Download</button>
                <p/>
            </div>
        )
    }

}

export default DownloadFile;

有关更多参考信息,请浏览此链接

 类似资料:
  • 问题内容: 我的代码从远程URL获取文件并在浏览器中下载文件: 代码:http://play.golang.org/p/x-EyR2zFjv 可以获取文件,但是如何在浏览器中下载文件? 问题答案: 要使浏览器打开下载对话框,请在响应中添加和标头: 在将内容发送到客户端之前,请执行此操作。您可能还希望将响应的标头复制到客户端,以显示适当的进度。 要将响应主体流传输到客户端而不将其完全加载到内存中(对

  • 问题内容: 我每天都有大量的CSV文件要从Yahoo Finance下载。我希望我的应用程序读取文件的创建日期(在我的计算机上,而不是服务器上)。如果创建日期早于今天,则应下载新文件(因为它将具有新数据)。如果不是,则不应该下载新文件,并且相关计算器(本质上就是我的应用程序)应该将上次下载的文件用于特定的股票代码。 我进行了一些谷歌搜索,并找到了Apache POI项目。 这是最好的方法吗?有没有

  • 编辑 当我在模拟器中运行这段代码时,代码仍然不能工作-文件没有下载。

  • 问题内容: 我需要将文件从服务器下载到桌面。(UBUNTU 10.04)我没有Web访问服务器,只是ssh。 如果有帮助,我的操作系统是Mac OS X和iTerm 2作为终端。 问题答案: 在您的终端中,键入: 相应地替换用户名,主机,远程文件名和本地目录。 如果要访问EC2(或其他需要使用私钥进行身份验证的服务),请使用以下选项:

  • 问题内容: 我有一个URL,用于保存我的工作中的一些项目,它们大部分是MDB文件,但也有一些JPG和PDF。 我需要做的是列出该目录中的每个文件(已完成)并为用户提供下载它的选项。 使用PHP如何实现? 问题答案: 要读取目录内容,可以使用readdir()并使用脚本(在我的示例中)来下载文件 在其中,您可以强制浏览器发送下载数据,并使用basename()来确保客户端不会传递其他文件名,例如

  • 我正试图下载一些公共数据文件。我通过screensrap获取指向文件的链接,这些文件看起来都是这样的: 我在Requests library网站上找不到任何文档。