前端ajax向后端发送请求,后端返回文件下载ajax怎么处理?
前端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 回复
不是太明白你的问题描述。。
后端返回文件下载ajax?逻辑不通!
source vue-cnode mobile 2.0
一般设置好响应头,浏览器识别为文件就会打开自带的下载窗口呀
js写一个动态创建并提交form表单的方法,依赖于jQuery插件。 // 文件下载 jQuery.download = function(url, method, filedir, filename){ jQuery(’<form action="’+url+’" method="’+(method||‘post’)+’">’ + // action请求路径及推送方法 ’<input type=“text” name=“filedir” value="’+filedir+’"/>’ + // 文件路径 ’<input type=“text” name=“filename” value="’+filename+’"/>’ + // 文件名称 ’</form>’) .appendTo(‘body’).submit().remove(); };