【React】【下载功能实现总结】结合GET或POST请求接口,下载服务器端文件

##【React】【下载功能实现总结】结合GET或POST请求接口,下载服务器端文件         在日常系统开发中,最多见的是结合使用GET请求方式的接口实现excel等文件的下载导出。(下面将给出GET方法)。那若是后台给你post接口让你实现下载功能又将怎么写呢?在react的技术栈下,下面将给出这两种的实现方法。react

<Button onClick={this.download}>下载</Button>

【GET请求接口】使用window.open

打开新的标签页的方式 get方法,若是要带参数的,直接在query上传递参数,可有多个参数,用“&”符号隔开,每一个参数的名和值用“=”符号隔开。api

download = () => {
    window.open(`/react/get/downloadPdf?id=${this.props.id}&name=${this.props.name}`)
};

【POST请求接口】动态建立临时form表单

使用ReactDOM建立临时form表单,再自行提交。服务器

// 隐藏的div Dom结构,用于存放临时form
<div id="downloadDiv" style={{ display: 'none' }} />
// 导出数据处理函数
download = () => {
	const {date} = this.state;
    // 结合隐藏form表单进行react和post接口下载数据
    let divElement = document.getElementById('downloadDiv');
    ReactDOM.render(
      <form action="/api/post/export" method="post" target="_blank">
        <input name="date" type="text" value={date} />     // 变量参数值
        <input name="status" type="text" value="1" />
      </form>,
      divElement
    );
    ReactDOM.findDOMNode(divElement)
      .querySelector('form')
      .submit();
    ReactDOM.unmountComponentAtNode(divElement);
  };
相关文章
相关标签/搜索