|
@@ -8,7 +8,7 @@
|
|
|
* @version
|
|
|
*/
|
|
|
|
|
|
-// const archiver = require('archiver');
|
|
|
+const archiver = require('archiver');
|
|
|
const path = require('path');
|
|
|
const fs = require('fs');
|
|
|
module.exports = app => {
|
|
@@ -100,44 +100,44 @@ module.exports = app => {
|
|
|
* @return {string} 压缩后的zip文件路径
|
|
|
*/
|
|
|
async compressedFile(fileIds, zipPath) {
|
|
|
- // this.initSqlBuilder();
|
|
|
- // this.sqlBuilder.setAndWhere('id', {
|
|
|
- // value: fileIds,
|
|
|
- // operate: 'in',
|
|
|
- // });
|
|
|
- // const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
|
|
|
- // const files = await this.db.query(sql, sqlParam);
|
|
|
- // // const paths = files.map(item => {
|
|
|
- // // return { name: item.filename + item.fileext, path: item.filepath }
|
|
|
- // // })
|
|
|
- // return new Promise(resolve => {
|
|
|
- // // 每次开一个新的archiver
|
|
|
- // const ziparchiver = archiver('zip');
|
|
|
- // const outputPath = fs.createWriteStream(path.resolve(this.app.baseDir, zipPath));
|
|
|
- // ziparchiver.pipe(outputPath);
|
|
|
- // files.forEach(item => {
|
|
|
- // ziparchiver.file(item.filepath, { name: item.filename + item.fileext });
|
|
|
- // });
|
|
|
+ this.initSqlBuilder();
|
|
|
+ this.sqlBuilder.setAndWhere('id', {
|
|
|
+ value: fileIds,
|
|
|
+ operate: 'in',
|
|
|
+ });
|
|
|
+ const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
|
|
|
+ const files = await this.db.query(sql, sqlParam);
|
|
|
+ // const paths = files.map(item => {
|
|
|
+ // return { name: item.filename + item.fileext, path: item.filepath }
|
|
|
+ // })
|
|
|
+ return new Promise(resolve => {
|
|
|
+ // 每次开一个新的archiver
|
|
|
+ const ziparchiver = archiver('zip');
|
|
|
+ const outputPath = fs.createWriteStream(path.resolve(this.app.baseDir, zipPath));
|
|
|
+ ziparchiver.pipe(outputPath);
|
|
|
+ files.forEach(item => {
|
|
|
+ ziparchiver.file(item.filepath, { name: item.filename + item.fileext });
|
|
|
+ });
|
|
|
|
|
|
- // // 存档警告
|
|
|
- // ziparchiver.on('warning', function(err) {
|
|
|
- // if (err.code === 'ENOENT') {
|
|
|
- // console.warn('stat故障和其他非阻塞错误');
|
|
|
- // } else {
|
|
|
- // throw err;
|
|
|
- // }
|
|
|
- // });
|
|
|
+ // 存档警告
|
|
|
+ ziparchiver.on('warning', function(err) {
|
|
|
+ if (err.code === 'ENOENT') {
|
|
|
+ console.warn('stat故障和其他非阻塞错误');
|
|
|
+ } else {
|
|
|
+ throw err;
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
- // // 存档出错
|
|
|
- // ziparchiver.on('error', function(err) {
|
|
|
- // console.log(err);
|
|
|
- // throw err;
|
|
|
- // });
|
|
|
- // ziparchiver.finalize();
|
|
|
- // outputPath.on('close', () => {
|
|
|
- // resolve(ziparchiver.pointer());
|
|
|
- // });
|
|
|
- // });
|
|
|
+ // 存档出错
|
|
|
+ ziparchiver.on('error', function(err) {
|
|
|
+ console.log(err);
|
|
|
+ throw err;
|
|
|
+ });
|
|
|
+ ziparchiver.finalize();
|
|
|
+ outputPath.on('close', () => {
|
|
|
+ resolve(ziparchiver.pointer());
|
|
|
+ });
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
return StageAtt;
|