标签的download: 是HTML5标准新增的属性,作用是指示浏览器下载URL而不是导航到URL,因此将提示用户将其保存为本地文件。

这种是定义的接口不是下载文件的路径,而是通过API可以获得文件的内容,由前端把内容写入到文件中,这种方法是通过获取文件信息,在网页上利用click事件,创建一个文件,然后将文件信息写入到文件中,然后保存

downloadFile(content, filename) {
filename = filename || 'license';
const blob = new Blob([content]);
if (window.navigator.msSaveOrOpenBlob) { // 兼容IE10
navigator.msSaveBlob(blob, filename);
} else { // 非IE
let aTag = document.createElement('a');
aTag.download = filename;
aTag.href = URL.createObjectURL(blob);
aTag.click();
URL.revokeObjectURL(aTag.href);
}
}

axios处理:我们发送请求的时候一定要写上responseType,{responseType:'arraybuffer'} 否则下载下来的文件打不开

axios.post('/fileSys/download', {
fileId: 'xxx'
},{
responseType:'arraybuffer'
}).then({
downloadFile(res.data.file, res.data.fileName);
}).catch(function (error) {
console.log(error)
})

文件上传:利用ES6的fromData来实现

function uploadFile (file) {
let formdata = new FormData()
formdata.append('file', file)
formdata.append('submit', false)
let config = {
headers: {
'Content-Type': 'multipart/form-data'
}
}
axios.post('/sysFile/upload', formdata, config).then(this.sendFileSucc)
}

 附:正常文件流下载(借助 xmlHttpRequest2

/**
* @url {String}: 下载请求路径
* @filename {String}: 文件名
**/
function downByUrl(url,filename) {
filename = filename || 'omc.lic';
var req = new XMLHttpRequest();
req.open("GET", url, true);
//监听进度事件
req.addEventListener("progress", function (evt) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
console.log(percentComplete);
}
}, false); req.responseType = "blob";
req.onreadystatechange = function () {
if (req.readyState === 4 && req.status === 200) {
if (typeof window.chrome !== 'undefined') {
// Chrome version
var link = document.createElement('a');
link.href = window.URL.createObjectURL(req.response);
link.download = filename;
link.click();
} else if (typeof window.navigator.msSaveBlob !== 'undefined') {
// IE version
var blob = new Blob([req.response], { type: 'application/force-download' });
window.navigator.msSaveBlob(blob, filename);
} else {
// Firefox version
var file = new File([req.response], filename, { type: 'application/force-download' });
window.open(URL.createObjectURL(file));
}
}
};
req.send();
}

最新文章

  1. 数据库SQL语句练习题
  2. MySQL 安装 启动 基本语法概述
  3. mac OS X操作 -- 常用
  4. WPF控件委托
  5. 锋利的JQuery(一)
  6. android shape(如自定义Button)
  7. jQuery:在一个回调中处理多个请求
  8. js 正则实例
  9. 玩转Web之JavaScript(二)-----javaScript语法总结(二) 涉及Date与数组的语法
  10. Linux/UNIX先进I/O
  11. 淘宝开放源码WebserverTengine基本安装步骤
  12. 每天一个Linux命令(12)--more命令
  13. javascript 命名空间与运用(前端基础系列)
  14. springmvc +mybatis 配置多数据源
  15. setTimeout、setInterval被遗忘的第三个参数
  16. 1、Mysql无法创建外键的原因 2、MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用
  17. LeetCode(86):分隔链表
  18. 更改了react-redux 官方网站的todolist结构
  19. [leetcode]254. Factor Combinations因式组合
  20. WPF:数据和行为

热门文章

  1. (11)ssh免密登录配置
  2. 《深入理解java虚拟机》读书笔记——java内存区域和内存溢出异常
  3. 如果在springboot中设置了 修改了默认页面的指向 使用thymleaf模板 而请求不到静态资源 可能是
  4. 不学无术的下场——OO第一单元总结
  5. AQS原理以及AQS同步组件总结
  6. 自学PHP的正确方法与经验
  7. c++ protected 访问限定
  8. C语言典型编程2
  9. mysql Table 'user' is marked as crashed and should be repaired
  10. 配置错误 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 overrideMode="Deny" 或旧有的 allowOverride="false" 的位置标记明确设置的。