下载文件,自动获取后端返回文件名,并自动识别文件格式,如果是iso-8859-1编码转换utf-8

点击下载文件按钮,获取后端返回接口,根据请求头自动解析文件名称,自动识别文件类型后缀名,如果中文是iso-8859-1格式转换为utf-8,否则下载不了.

clike 复制代码
axios({
  method: 'get',
  url: 'http://your-backend-url/download',
  responseType: 'blob',
}).then(response => {
// 获取请求头内容
  const contentDisposition = response.headers['content-disposition'];
  // 文件名处理、格式处理
  const encodedFilename = contentDisposition.split('filename=')[1];

  // utf-8格式处理
  // const decodedFilename = decodeURIComponent(encodedFilename);
  
  // iso-8859-1格式处理
  const decodedFilename = decodeURIComponent(escape(encodedFilename));
  // 创建一个 Blob 对象
  const blob = new Blob([response.data], { type: response.headers['content-type'] });
  
  // 创建一个 URL 对象
  const url = window.URL.createObjectURL(blob);

  // 创建一个链接元素并模拟点击以下载文件
  const a = document.createElement('a');
  a.href = url;
  //文件名、后缀类型处理
  a.download = decodedFilename;
  document.body.appendChild(a);
  a.click();
  // 释放内存
  window.URL.revokeObjectURL(url);
});
相关推荐
乐观勇敢坚强的老彭16 分钟前
C++信奥:开关门、开关灯问题
开发语言·c++·算法
冻柠檬飞冰走茶16 分钟前
PTA基础编程题目集 7-31 字符串循环左移(C语言实现)
c语言·开发语言·数据结构·算法
a1117761 小时前
中文优先的企业 RAG 知识库 开源项目
开发语言·开源·kotlin
破z晓1 小时前
javascript 导出excel表
开发语言·javascript·excel
t-think2 小时前
C++类和对象详解(一)
开发语言·c++
西门啐血2 小时前
上位机开发之假装有设备,使用 C# 模拟串口设备
开发语言·mongodb·c#
ask_baidu2 小时前
python实现Doris的streamLoad
开发语言·python
小罗水2 小时前
第17章 后台管理端与演示支持
javascript·vue.js·ecmascript
阿米亚波3 小时前
【C++ STL】std::unordered_multiset
开发语言·数据结构·c++·笔记·stl
我是唐青枫3 小时前
Java ReentrantLock 实战详解:比 synchronized 更灵活的可重入锁
java·开发语言