下载文件,自动获取后端返回文件名,并自动识别文件格式,如果是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);
});
相关推荐
陈一Tender4 分钟前
JavaWeb后端实战(登录认证 & 令牌技术 & 拦截器 & 过滤器)
java·开发语言·spring boot·mysql
Camel卡蒙4 分钟前
红黑树详细介绍(五大规则、保持平衡操作、Java实现)
java·开发语言·算法
jerryinwuhan8 分钟前
机器人模拟器(python)
开发语言·python·机器人
cecyci24 分钟前
如何实现AI聊天机器人的打字机效果?
前端·javascript
孤廖30 分钟前
吃透 C++ 栈和队列:stack/queue/priority_queue 用法 + 模拟 + STL 标准实现对比
java·开发语言·数据结构·c++·人工智能·深度学习·算法
驰羽39 分钟前
[GO]GORM中的Tag映射规则
开发语言·golang
非凡的世界1 小时前
深入理解 PHP 框架里的设计模式
开发语言·设计模式·php
小龙报1 小时前
《算法通关指南---C++编程篇(3)》
开发语言·c++·算法·visualstudio·学习方法·visual studio
凤山老林1 小时前
排序算法:详解插入排序
java·开发语言·后端·算法·排序算法
郝学胜-神的一滴2 小时前
Effective STL 第5条:区间成员函数优先于单元素成员函数
开发语言·c++·程序人生·stl·软件工程