前端二进制流文件下载-Blob操作

本文介绍了前端如何处理后端返回的二进制流文件进行下载,主要探讨了使用Blob对象进行转换和下载的方法,包括调整axios的responseType为blob,构建Blob对象,动态创建a标签实现文件下载。同时,对Blob构造函数的参数进行了简单说明。
摘要由CSDN通过智能技术生成

前端如何实现文件下载

前端下载文件的方法有两种, 一种是后端返回下载的URL, 使用 Window.open(URL) 下载, 另一种就是后端直接返回文件的二进制内容,前端做转换再下载。

使用场景

如果后台返回的是 get 请求的下载可以直接使用 a 标签下载

<a href='http://下载地址' target="_blank" rel="noopener noreferrer nofollow">下载</a>

如果后台返回的是 URL 地址

window.open(URL, '_blank')

如果后台的的下载接口是 post 请求时,需要使用 blob 转换,

前端如何将二进制文件做转换实现下载呢?

只要思想就是把后端返回的二进制文件放在 Blob 里面,并且把使用Blob 创建一个URL ,再通过JavaScript动态创建一个a标签,使用a标签打开这个 URL 。

获取后台返回的值要用 Blob 类型来接收, 把 axios 的 responseType 改成 blob, 并且在接口调用成功后进行上面的步骤。

具体实现

axios.post({
   
method: 'post',
url: '/export',
responseType: 'blob'
<
可以使用 Java 中的 java.net.URL 类和 java.net.HttpURLConnection 类来实现文件下载功能。具体步骤如下: 1. 构造 URL 对象并设置需要下载文件的 URL 地址。 2. 打开 URL 连接并设置请求头信息,例如 User-Agent、Referer 等。 3. 获取响应码,如果响应码为 200 则代表可以下载文件。 4. 获取文件的输入并创建文件的输出,读取输入中的数据并将其保存到输出中。 5. 关闭输入输出和 URL 连接。 以下是 Java 示例代码: ``` try { // 1、构造 URL 对象 URL url = new URL("http://example.com/file.txt"); // 2、打开 URL 连接并设置请求头信息 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("User-Agent", "Mozilla/5.0"); conn.setRequestProperty("Referer", "http://example.com"); // 3、获取响应码 int responseCode = conn.getResponseCode(); if (responseCode == 200) { // 4、获取文件的输入并创建文件的输出 InputStream in = conn.getInputStream(); OutputStream out = new FileOutputStream("local-file.txt"); // 读取输入中的数据并将其保存到输出中 byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } // 5、关闭输入输出和 URL 连接 out.close(); in.close(); conn.disconnect(); System.out.println("文件下载成功"); } else { System.out.println("文件下载失败,响应码:" + responseCode); } } catch (IOException e) { System.out.println("文件下载异常:" + e.getMessage()); } ``` 希望能帮到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值