- 近来看到许多前端的小伙伴们,须要从服务器端下载诸如excel,word,pdf的文件,但是在处置惩罚时怎样也没法发生想要的结果(点击后马上下载文件),而是没有任何响应,检察控制台发明返回的数据是一片乱码,连系本身的履历,愿望能给人人一些协助。
- 我这里ajax要求运用VUE的经常使用小伙伴axios,怎样用axios我就不细致引见了,不会的小伙伴请看这里
this.$http.post('/outputExcel',{
//Content_Type:'Authorization',
// excelData:JSON.stringify(this.tableData),能够付带一些参数
}).then((res)=> {
console.log(res.data.filePath)
//一般情况下返回值是excel文件的下载途径
this.excelpath="http://127.0.0.1:3000/download/"+res.data.filePath;
window.open(this.excelpath)
})
以上代码合营服务器端完成文件下载,但须要注重的是,服务器端不是返回文件,而是返回文件的途径res.data.filePath。比方我这里的文件存放在服务器端download文件夹下。
获得途径后运用window.open()
要领猎取文件,同时服务器端应该有响应的处置惩罚顺序,处置惩罚这个get要求:
我服务器端运用的express: 代码大抵以下:var express = require('express'); var path= require('path') var router = express.Router(); router.get('/:filename', function(req, res, next) { var filename=req.params.filename; var file=path.join(__dirname,'../download/'+filename) res.download(file) }) module.exports = router;
- 重点就是,不要直接返回文件,而是经由过程接见文件途径的体式格局举行下载;** 假如你另有什么疑问,或许更好的方法,能够留言互相学习交换。
–