如何在前端下载后端返回的文件流时,获取请求头中的文件名称?

简介: 如何在前端下载后端返回的文件流时,获取请求头中的文件名称?

1. 前言

在前后端分离的开发模式下,前端需要从后端获取文件流,以便进行文件下载。同时,前端还需要获取请求头中的文件名称,以便为用户提供更加友好的下载体验。本文将介绍如何在前端下载后端返回的文件流时,获取请求头中的文件名称。

2. 获取文件流

前端可以通过发送请求的方式获取后端返回的文件流。通常情况下,后端会先将文件流传输到前端,然后前端再将文件流转换为文件进行下载。

下面是一个示例代码:

axios({
   
  method: 'get',
  url: '/download',
  responseType: 'blob'
}).then((response) => {
   
  const url = window.URL.createObjectURL(new Blob([response.data]));
  const link = document.createElement('a');
  link.href = url;
  link.setAttribute('download', 'file.pdf');
  document.body.appendChild(link);
  link.click();
})

在上述代码中,axios 是一个常用的 HTTP 请求库。responseType 参数设置为 blob,表示响应数据是二进制流。响应数据包含在 response.data 中,前端可以利用浏览器提供的 Blob 接口将文件流转换为下载链接。

3. 获取请求头中的文件名称

后端返回文件流时,通常会在响应头中设置 Content-Disposition 实体头字段,用于指定文件名称、类型等信息。其中,Content-Disposition 实体头字段中的 filename 子参数用于指定文件名称。

在前端下载文件时,可以通过获取响应头中的 Content-Disposition 实体头字段,进而获取文件名称。下面是一个示例代码:

axios({
   
  method: 'get',
  url: '/download',
  responseType: 'blob'
}).then((response) => {
   
  const disposition = response.headers['content-disposition'];
  const matchArray = disposition.match(/filename="(.*)"/);
  const filename = matchArray[1];
  const url = window.URL.createObjectURL(new Blob([response.data]));
  const link = document.createElement('a');
  link.href = url;
  link.setAttribute('download', filename);
  document.body.appendChild(link);
  link.click();
})

在上述代码中,response.headers['content-disposition'] 获取了响应头中的 Content-Disposition 实体头字段。利用正则表达式匹配出 filename 子参数的值,即可获取文件名称。最后,在创建 <a> 标签时,将 download 属性设置为文件名称。

4. 总结

本文介绍了如何在前端下载后端返回的文件流时,获取请求头中的文件名称。通过获取响应头中的 Content-Disposition 实体头字段,再利用正则表达式匹配出 filename 子参数的值,即可轻松获取文件名称。

目录
相关文章
|
10天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
38 3
|
1月前
|
缓存 前端开发
后端MultipartFile接收文件转Base64
后端MultipartFile接收文件转Base64
37 5
|
1月前
|
前端开发 API
前端界面生成PDF并导出下载
【10月更文挑战第21天】利用合适的第三方库,你可以在前端轻松实现界面生成 PDF 并导出下载的功能,为用户提供更方便的文档分享和保存方式。你还可以根据具体的需求进一步优化和定制生成的 PDF 文件,以满足不同的业务场景要求。
|
2月前
|
JSON 前端开发 Java
震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)
文章介绍了Java后端如何使用Spring Boot框架响应不同格式的数据给前端,包括返回静态页面、数据、HTML代码片段、JSON对象、设置状态码和响应的Header。
168 1
震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)
|
2月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
27 1
|
2月前
|
前端开发 JavaScript
💥【exceljs】纯前端如何实现Excel导出下载和上传解析?
本文介绍了用于处理Excel文件的库——ExcelJS,相较于SheetJS,ExcelJS支持更高级的样式自定义且易于使用。表格对比显示,ExcelJS在样式设置、内存效率及流式操作方面更具优势。主要适用于Node.js环境,也支持浏览器端使用。文中详细展示了如何利用ExcelJS实现前端的Excel导出下载和上传解析功能,并提供了示例代码。此外,还提供了在线调试的仓库链接和运行命令,方便读者实践。
451 5
|
1月前
|
缓存 前端开发
后端MultipartFile接收文件转Base64
后端MultipartFile接收文件转Base64
49 0
|
2月前
|
JavaScript 前端开发 编译器
吐血整理:纯前端如何实现批量dom转图片,并下载成压缩包
【10月更文挑战第2天】吐血整理:纯前端如何实现批量dom转图片,并下载成压缩包
65 2
|
2月前
|
存储 前端开发 Java
Java后端如何进行文件上传和下载 —— 本地版(文末配绝对能用的源码,超详细,超好用,一看就懂,博主在线解答) 文件如何预览和下载?(超简单教程)
本文详细介绍了在Java后端进行文件上传和下载的实现方法,包括文件上传保存到本地的完整流程、文件下载的代码实现,以及如何处理文件预览、下载大小限制和运行失败的问题,并提供了完整的代码示例。
895 2
|
2月前
|
存储 前端开发 Java
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
本文介绍了使用Kaptcha插件在SpringBoot项目中实现验证码的生成和验证,包括后端生成验证码、前端展示以及通过session进行验证码校验的完整前后端代码和配置过程。
311 0
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)