CNode

前端ajax向后端发送请求,后端返回文件下载ajax怎么处理?

问答
Mmuzi-xiangxiang发布于9 年前最后回复9 年前4 回复6141 浏览0 收藏

前端js上传文件到后端

var uploadFile = function () {
  var formData = new FormData($("#upload-form")[0]);
  if ($('#upload-file').val().trim().length < 1) {
    alert('请选择您要上传的文件!');
    return;
  }
  $.ajax({
    url: '/uploadFile',
    type: 'POST',
    data: formData,
    async: true,
    cache: false,
    contentType: false,
    processData: false, 
    success: function (data) {
      if (data) {
        console.log('解析表格成功');
      } else {
        alert('文件格式错误,请重新上传。。。')
      }
    },
    error: ajaxerror
  });
}

后端处理好数据后,返回下载

download:function (req,res) {
    var data = forMatCsv();

    // 设置 header 使浏览器下载文件
    res.setHeader('Content-Description', 'File Transfer');
    res.setHeader('Content-Type', 'application/csv; charset=utf-8');
    res.setHeader('Content-Disposition', 'attachment; filename=测试.csv');
    res.setHeader('Expires', '0');
    res.setHeader('Cache-Control', 'must-revalidate');

    // 为了让 Windows 能识别 utf-8,加上了 dom
    res.send('\uFEFF' + data);
  }

返回的文件不知道怎么接受了

查看回复

回复 (4)

C
CRAZYFAKE#1·9 年前

不是太明白你的问题描述。。

1
1340641314#2·9 年前

后端返回文件下载ajax?逻辑不通!

source vue-cnode mobile 2.0

L
LeoHughes#3·9 年前

一般设置好响应头,浏览器识别为文件就会打开自带的下载窗口呀

G
godghdai#4·9 年前

js写一个动态创建并提交form表单的方法,依赖于jQuery插件。 // 文件下载 jQuery.download = function(url, method, filedir, filename){ jQuery('' + // action请求路径及推送方法 '' + // 文件路径 '' + // 文件名称 '') .appendTo('body').submit().remove(); };

参考 http://www.cnblogs.com/zj0208/p/5961181.html

参与回复
登录后即可参与回复。登录