meteor---在合并打包多个文件ZIP下载的功能

实现多个文件边打包边下载的功能,速度还可以,本人亲测,欢迎大家来指点archiver --用NPM安装这个模块---本人文件存储在file-collection 中,可以用fs :
fs.createReadStream(file)
更多带包工具请见 http://stackoverflow.com/questions/20107303/dynamically-create-and-stream-zip-to-client
var fail = function(response,message) {
response.writeHead(200);
var str = "notfound:";
if(message){
str += message;
}
response.end(str);
};

WebApp.connectHandlers.use(‘/my/download‘,function(req, res, next) {
try {
var ple_code = req.query.ple_code;
var cps_id = req.query.cps_id;
if(ple_code === undefined || cps_id === undefined){
fail(res);
}
var docs_latest = Customor.find({
cps_id: cps_id
}).fetch();
var doc_id_arr = [];
var file_obj = Files.findOne(new Meteor.Collection.ObjectID(ple_code));
if(!file_obj){
fail(res,‘ple notfound‘);
}
doc_id_arr.push({
doc_id: ple_code,
doc_name: file_obj.filename
});
docs_latest.map(function(item) {
_.map(item.docs_ar, function(k) {
var file_obj_tmp = Files.findOne(new Meteor.Collection.ObjectID(k));
doc_id_arr.push({
doc_id: k,
doc_name: file_obj_tmp.filename
});
});
});

res.writeHead(200, {
‘Content-Type‘: ‘application/zip‘,
‘Content-disposition‘: ‘attachment; filename=myfile.zip‘
});
var archiver = Meteor.npmRequire(‘archiver‘);
var zip = archiver(‘zip‘);

// Send the file to the page output.
zip.pipe(res);
_.map(doc_id_arr,function(k){
var lolStream = Files.findOneStream(new Meteor.Collection.ObjectID(k.doc_id));
zip.append(lolStream, {name: k.doc_name});
});
zip.finalize();
} catch (error) {
fail(res,error);
}

});

  

时间: 2024-10-14 12:04:01

meteor---在合并打包多个文件ZIP下载的功能的相关文章

C#实现FTP文件夹下载功能【转载】

网上有很多FTP单个文件下载的方法,前段时间需要用到一个FTP文件夹下载的功能,于是找了下网上的相关资料结合MSDN实现了一段FTP文件夹下载的代码. 实现的思路主要是通过遍历获得文件夹下的所有文件,当然,文件夹下可能仍然存在文件夹,这样就需要结合递归这种方法来实现对一个我们指定的文件夹获得其下的所有文件.最后通过一个下载方法来逐级将文件夹内的每个文件下载到本地. 有关递归的MSDN在线帮助--http://msdn.microsoft.com/zh-cn/library/z3dk2cc3.as

压缩文件 .zip.001 .zip.002合并

可以把名字特别长的命名为1  这样简单些 copy /B 1.zip.001+1.zip.002 1.zip 压缩文件 .zip.001 .zip.002合并

Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法

方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下: Manifest-Version: 1.0 Class-Path: lib/commons-codec.jar lib/commons-httpclient-3.1.jar lib/commons-logging-1.1.jar lib/log4j-1.

Python3.4 .py文件如何打包成.exe文件

一.安装pywin32 1.下载pywin32-218.win-amd64-py3.4.exe (根据操作系统的位数下载) 2.运行安装 3.如果安装提示如下错误: 打开注册表 "regedit" 1.从"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python"找到注册表,导出 2.编辑其内容,用"HKEY_CURRENT_USER\Software" 替换全部的 "HKEY_LOCAL_MACHI

Windows上使用CSS合并打包工具css-combo

首先介绍下css-combo的功能:把CSS模块化的文件,打包合并到一个CSS文件中. 为什么项目中可能需要使用这个工具,作者给出了详细的说明.http://www.techcheng.com/study/css/introduce-css-combo.html ccs-combo的源文件托管地址:https://github.com/daxingplay/css-combo 由于这个是用nodejs做的小工具,所以我们必须安装nodejs和npm模块管理操作扩展. 1. 下载Node.js在W

gulp自动化打包及静态文件自动添加版本号

前端自动化打包发布已是一种常态,尤其在移动端,测试过程中静态资源的缓存是件很头疼的事情,有时候明明处理的bug测试还是存在,其实就是缓存惹的祸,手机不比pc浏览器,清理缓存还是有点麻烦的.所以自动化实现静态资源的版本更新才是正道. 实际开发过程中,我们常用到的功能包括: 1.目标路径的清除: 2.静态资源复制到目标路径: 3.css文件的合并与压缩: 4.js文件的合并与压缩: 5.根据文件的变化添加版本号: 第1.2.3.4几个功能倒是很好解决,今天主要说说gulp实现静态资源自动添加版本号:

文件打包,下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件

总结: 使用PHP下载文件的操作需要给出四个header(),可以参考我的另一篇博文:PHP如何实现下载功能超详细流程分析 计算文件的大小的时候,并不需要先打开文件,通过filesize($filename)就可以看出,如果需要先打开文件的话,filesize可能就会是这样的形式了filesize($filehandle) 向客户端回送数据的是,记得要设置一个buffer,用来指定每次向客户端输出多少数据,如:$buffer=1023.如果不指定的话,就会将整个文件全部写入内存当中,再一次性的讲

cmd合并打包、存在的坑、解决方案及注意事项

我想要的打包目标是:将模块合并,同时实现只需要简单修改的配置就能在发布版和调试版之间切换. 我的CMD模块文件 src/modules/module-1.js src/modules/module-2.js //src/modules/module-all.js src/modules/startup.js 我想要的目标文件是 dist/modules/module-all.js dist/modules/startup.js 首页文件 index.html <script type="t

Eclipse项目中引用第三方jar包时将项目打包成jar文件的两种方式

转载自:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下: Manifest-Version: 1.0 Class-Path: lib/commons-codec.jar lib/commons-htt