关于前端运用ajax下载服务器端文件乱码的题目

  • 近来看到许多前端的小伙伴们,须要从服务器端下载诸如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;
    
  • 重点就是,不要直接返回文件,而是经由过程接见文件途径的体式格局举行下载;** 假如你另有什么疑问,或许更好的方法,能够留言互相学习交换。

    原文作者:懒懒的技术宅
    原文地址: https://segmentfault.com/a/1190000013215545
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞