在浏览器中我们经常会下载东西,比如点击一个按钮就将文件下载了下来。
本篇文章将讲述如何用React实现上述功能。

目录

  • 一、后端返回文件流
    • 方法一:使用axios
      • 1、React中安装并引入axios依赖
      • 2、js文件
    • 方法二:使用XMLHttpRequest
  • 二、后端返回文件url地址
    • 1. js函数如下
    • 2.调用函数

一、后端返回文件流

如果后端提供了一个接口,该接口返回文件流信息,要通过该文件流下载文件可参考下面的步骤。

方法一:使用axios

1、React中安装并引入axios依赖

在React项目中使用axios请求,首先需要安装axios:

npm install axios --save

然后在react文件中导入axios依赖:

import axios from 'axios';

2、js文件

示例如下

import React, { Component } from 'react';
import axios from 'axios';export class DownFile extends Component {downSubmit= () =>{axios({url: '/test/down/downloadFile', //调用的接口,该接口返回文件流method: 'get',params: {//接口的参数name:"张三",id:"1"},responseType: 'blob', }).then((response) => {const url = window.URL.createObjectURL(new Blob([response.data]));const link = document.createElement('a');link.href = url;link.setAttribute('download', 'myfile.log'); //下载后的文件名myfile.logdocument.body.appendChild(link);link.click();});
}render() {return (<div>//省略了downloadButton样式<button type="buttom" className="downloadButton" style={{color: "#fff",borderColor: "#44BBFC",  fontSize: "14px",background: "#2196f3"}} onClick={this.downSubmit} >下载</button></div>);}
}

然后点击下载按钮就可以将文件下载到浏览器了。

方法二:使用XMLHttpRequest

function download(url) {const xhr = new XMLHttpRequest();xhr.open('GET', url, true);xhr.responseType = 'blob';xhr.onload =function() {if (xhr.status === 200) {// 获取文件blob数据并保存that.saveAs(xhr.response, item.fname_l2+"."+item.fsimplename);}};xhr.send();}function saveAs(data, name) {var urlObject = window.URL || window.webkitURL || window;var export_blob = new Blob([data]);var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a')save_link.href = urlObject.createObjectURL(export_blob);save_link.download = name;save_link.click();}

二、后端返回文件url地址

有时候我们只知道文件在服务器的存储url地址,要通过这个url去下载文件可参考下面的步骤。

1. js函数如下

//url是文件的url ,filename是文件名
function download(url, filename) {const link = document.createElement("a");link.href = url;link.download = filename;link.click();
}

2.调用函数

示例如下

  download("http://127.0.0.1:8080/mbos/download/attach/myExcelTest.docx", "myExcelTest.docx");

就可以将文件下载到浏览器了。


参考:
React中使用axios发送请求的常用方法
How to download files using axios

前端React下载文件到浏览器相关推荐

  1. Blazor 中如何下载文件到浏览器

    Blazor 中如何下载文件到浏览器 目录 一.前言 二.方法一(导航跳转) 三.方法二(下载后传出) (一) 使用 RestSharp 下载 (二) 使用 BlazorDownloadFile 传出 ...

  2. java 通过url下载文件到浏览器

    前端传来url地址与文件名,下载文件到浏览器 代码 (这里模拟,直接在代码里写了url,可以拼接在url后进行截取) 请求接口 @GetMapping("/findOperatorBarVO ...

  3. 两种常用的react 下载文件方法

    总结了两种常用的react 下载文件到本地浏览器方法 方法1:使用a 标签的href属性设置为文件路径,就可以触发下载行为. <akey={record.id}href={`/lib/attac ...

  4. vue项目中点击button下载文件到浏览器

    代码实现 在src 下面的 directive 文件夹下新建目录 down-load-url down-load-url / index.js文件 /*index.js文件* 后端返回文件的url,前 ...

  5. 使用a标签下载文件,浏览器会直接打开解决方案

    使用a标签下载文件,浏览器会直接打开解决方案 背景 一.HTML中的a标签实现点击下载 二.即使使用a标签的download属性,chrome浏览器还是会打开 三.解决方案 解决方案一:使用ajax请 ...

  6. java获取默认下载路径吗_java下载文件到浏览器默认路径

    java下载文件到浏览器默认路径 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog..net/mengmeng2222222 一.controller层代码: @Requ ...

  7. java byte 图片浏览器直接显示_以Spring Boot的方式显示图片或下载文件到浏览器的示例代码...

    以Java web的方式显示图片到浏览器以Java web的方式下载服务器文件到浏览器 以Spring Boot的方式显示图片或下载文件到浏览器 请求例子:http://localhost:8080/ ...

  8. 下载---当前端调用下载文件接口,接口通了,浏览器却没有下载文件(不一定好使)

    1.下载文件封装 import request from './request' export function download(url, params,filename) {     reques ...

  9. java返回pdf文件流给前端_如何实现springmvc将返回的给前端的pdf文件放在浏览器里预览?...

    想在浏览器里直接GET目标URL,然后就把PDF在浏览器里预览出来(不用前端插件的前提下),就像这样: 后端代码: @RequestMapping(value = "/showPDF&quo ...

最新文章

  1. object标签与embad掉钱_使用object或embed标签来播放SWF文件
  2. 高项的项目管理ITTO(PMP第五版)
  3. 找到的比较好的工作面试题笔试题
  4. 如何绕过 TPM 2.0 安装 Windows 11 操作系统?
  5. Windows XP系统的“恢复”办法
  6. linux 改变文件夹属性,技术|在Linux中用chattr和lsattr命令管理文件和目录属性
  7. python闹钟界面程序_利用QT写一个极简单的图形化Python闹钟程序
  8. 高等数学总结(无穷级数)
  9. 360Win10的360wifi无速度问题
  10. ubuntu开机后nvidia驱动突然消失,nvidia显卡驱动卸载与安装
  11. 给定一个递增序列,a1 a2 ...an 。定义这个序列的最大间隔为d=max{ai+1 - ai }(1≤in),现在要从a2 ,a3 ..an-1 中删除一个元素。问剩余序列的最大间隔最小...
  12. 高斯输出文件批量读取能量
  13. java使用ajax请求下载excel响应结果显示乱码
  14. python打造excel神器_将Excel与Python完美组合的神器
  15. unity 在移动平台中,文件操作路径详解
  16. 05.局域网_NAT
  17. 开篇-HOG提取训练检测+样本制作
  18. vue实现网页端企业微信扫码登录功能(前端部分)
  19. 英语单词词性顺口溜_英语十大词性口诀和用法
  20. 红旗linux被收购,红旗Linux收购Ubuntu

热门文章

  1. 眼镜计算机检查,电脑验光
  2. 技术专栏|室内定位不用愁,UWB来拯救!
  3. [审核]App审核(第三方登录)
  4. IDEA开发 工具IC和IU的区别
  5. 问题解决:inittramfs unpacking failed:Decoding failed
  6. 十年Java架构师分享
  7. ICA原理推导及代码实现
  8. C#回顾学习笔记四十:三层架构
  9. 可以正常上网但ping 127.0.0.1或localhost出现请求超时的解决方法
  10. 一文读懂JVM虚拟机:JVM虚拟机的内存管理(万字详解)