浅浅记录一下 react批量下载为zip的实现过程

this.setState({ pageLoading: true })
axios({
  url: `/${hc_server_download}/budget_adjust/downLoads`,
  method: 'post',
  responseType: 'blob',
  data: keyselected
}).then(res => {
  if (res.status == 200) {
    // 处理下载文件名 start
    let fileName = res.headers["content-disposition"].split(";")[1].split(`filename="`)[1]
    fileName = fileName.substring(0,fileName.length - 1)
    // 处理下载文件名 end
    let _blob = new Blob([res.data], {
      type: 'application/vnd.ms-excel;charset=UTF-8'
    })
    let _link = document.createElement('a');
    _link.href = window.URL.createObjectURL(_blob);
    _link.download = fileName; //下载的文件名
    _link.click();
    _link.remove();
    message.success(intl.get('message.downloadSuccessfully'))
      this.setState({ pageLoading: false })
    } else {
      message.error(res.statusText)
      this.setState({ pageLoading: false })
    }
}, err => {
    message.error(intl.get('message.downloadFailed'))
    this.setState({ pageLoading: false })
})

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React中调用后台服务下载zip文件的方法有多种,以下是一种基本的方法: 首先,你需要创建一个按钮或其他触发事件的组件,用户点击该按钮触发下载操作。 ```js import React from 'react'; class DownloadButton extends React.Component { handleDownload = () => { fetch('/api/download-zip', { // 后台接口地址 method: 'GET', headers: { 'Content-Type': 'application/zip', // 告诉后台要下载zip文件 }, }) .then(response => response.blob()) // 将响应数据转换为Blob对象 .then(blob => { const url = window.URL.createObjectURL(blob); // 通过Blob创建下载链接 const a = document.createElement('a'); a.style.display = 'none'; a.href = url; a.download = 'download.zip'; // 设置下载文件的名称 document.body.appendChild(a); a.click(); // 模拟点击下载链接 window.URL.revokeObjectURL(url); // 释放URL对象 }) .catch(error => { console.error('下载失败:', error); }); }; render() { return ( <button onClick={this.handleDownload}>下载ZIP文件</button> ); } } ``` 上述代码中,我们使用了fetch函数发送GET请求到后台接口地址`/api/download-zip`,通过设置请求头`Content-Type`为`application/zip`告诉后台要下载zip文件。在获取到后台响应后,我们将其转换为Blob对象,然后通过`window.URL.createObjectURL(blob)`方法创建下载链接。接着,我们动态创建了一个`<a>`元素,并将其添加到DOM中,在`href`属性中设置下载链接,`download`属性设置下载文件的名称。最后,我们模拟点击`<a>`元素触发下载操作,并通过`window.URL.revokeObjectURL(url)`释放URL对象。 当用户点击按钮时,会触发`handleDownload`方法,从而进行下载操作。这样我们就可以在React中调用后台服务下载zip文件了。当然,具体的后台接口实现方式和路径需要根据项目实际情况进行设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值