为什么res.download正在下载一个空的zip文件
why res.download is downloading an empty zip file?
我正在使用expressjs开发我的应用程序。我已经编写了一个使用res.download(filepath, filename)
在客户端下载文件的服务。以下是我的服务。
router.route('/downloadFile').get(function(req,res){
var filter = url.parse(req.url, true).query.filter;
Model.find({label:filter}).exec()
.catch(function(err){
console.error(err);
})
.then(function(data){
var fileTobeDownloadedPath = foo(); //returns a zip file path which belongs to a location in my temp folder in project
res.download(fileTobeDownloadedPath, path.parse(fileTobeDownloadedPath).base);
});
});
这是我的前端javascript代码
$(document).on('click','#btnDownload', function(event) {
// I am populating the values of the array using some javascript query
window.open('/downloadFile?filter=' + angular.element('[ng-controller=mainCtrl]').scope().mainCtrlObj.modalContent.label +
'&tags=' + angular.element('[ng-controller=mainCtrl]').scope().mainCtrlObj.modalContent.tags.toString() +
'&sizes=' + sizes.toString() + '&formats=' + formats.toString());
});
根据用户在前端选中的复选框,服务将调用res.download,并将zip文件路径作为参数或单个文件路径。但当我选择多个选项并单击下载时,我应该下载一个zip文件。
文件当前正在下载,但zip文件大小为0字节,并且zip文件中没有文件。
请告诉我出了什么问题。提前感谢。
可能太晚了,但这不会起作用,因为函数没有定义为async,使其成为async。基本上,您已经开始将文件转换为zip,甚至在完成zip文件之前就发送响应。
所以,
router.route('/downloadFile').get(function(req,res){
var filter = await url.parse(req.url, true).query.filter;
Model.find({label:filter}).exec()
.catch(function(err){
console.error(err);
})
.then(async function(data){
var fileTobeDownloadedPath = await foo(); //returns a zip file path
which belongs to a location in my temp folder in project
res.download(fileTobeDownloadedPath,
path.parse(fileTobeDownloadedPath).base);
});
});
这应该有效,如果不起作用,你必须尝试其他方法使其同步。
相关文章:
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- Sails.js:同时发布文本输入和一个文件
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 要求定义另一个文件中的对象
- 是否可以使用JavaScript/AAJAX在客户端创建一个文件
- 如何将所有JS文件连接到一个文件夹中
- 请求准备一个文件并返回路径,允许用户在准备好时下载
- 从AngularJS中的另一个文件中的控制器访问服务
- 将任何CDN配置为只传递一个文件,无论请求的url是什么
- 通过AngularJS promise下载一个文件
- Grunt-将多个文件最小化/处理为一个文件
- 文件的节点自动化移动到另一个文件夹中
- 用于文件移动到另一个文件夹的Javascript自动化
- 需要从一个文件中获取多个模块
- 仅首先需要使用jasmine从节点添加一个文件
- jQuery Mobile样式从另一个文件加载内容
- 最小化CSS/JS文件,并使用命令行创建一个文件
- 我如何制作一个文件的副本并用gump将其移动到父文件夹
- 为什么当我上传文件并点击更多上传另一个文件的第一个删除