|
@@ -1524,36 +1524,42 @@ module.exports = app => {
|
|
|
* @param {Object} ctx - 全局上下文
|
|
|
*/
|
|
|
async downloadZip(ctx) {
|
|
|
- const fileIds = JSON.parse(ctx.request.query.fileIds);
|
|
|
- const zipFilename = `${ctx.tender.data.name}-计量台账-${ctx.params.order}-附件.zip`;
|
|
|
- const zipPath = `app/public/upload/${ctx.tender.id}/stage/${zipFilename}`;
|
|
|
- const size = await ctx.service.stageAtt.compressedFile(fileIds, zipPath);
|
|
|
-
|
|
|
- // 解决中文无法下载问题
|
|
|
- const userAgent = (ctx.request.header['user-agent'] || '').toLowerCase();
|
|
|
- let disposition = '';
|
|
|
- if (userAgent.indexOf('msie') >= 0 || userAgent.indexOf('chrome') >= 0) {
|
|
|
- disposition = 'attachment; filename=' + encodeURIComponent(zipFilename);
|
|
|
- } else if (userAgent.indexOf('firefox') >= 0) {
|
|
|
- disposition = 'attachment; filename*="utf8\'\'' + encodeURIComponent(zipFilename) + '"';
|
|
|
- } else {
|
|
|
- /* safari等其他非主流浏览器只能自求多福了 */
|
|
|
- disposition = 'attachment; filename=' + new Buffer(zipFilename).toString('binary');
|
|
|
- }
|
|
|
- ctx.response.set({
|
|
|
- 'Content-Type': 'application/octet-stream',
|
|
|
- 'Content-Disposition': disposition,
|
|
|
- 'Content-Length': size,
|
|
|
- });
|
|
|
- // const readStream = fs.readFileSync(path.resolve(this.app.baseDir, zipPath));
|
|
|
- // ctx.body = fs.readFileSync(path.resolve(this.app.baseDir, zipPath));
|
|
|
- ctx.body = fs.readFileSync(path.resolve(this.app.baseDir, zipPath));
|
|
|
- // readStream.on('close', () => {
|
|
|
-
|
|
|
- // });
|
|
|
- if (fs.existsSync(path.resolve(this.app.baseDir, zipPath))) {
|
|
|
- fs.unlinkSync(path.resolve(this.app.baseDir, zipPath));
|
|
|
+ try {
|
|
|
+ const fileIds = JSON.parse(ctx.request.query.fileIds);
|
|
|
+ const zipFilename = `${ctx.tender.data.name}-计量台账-${ctx.params.order}-附件.zip`;
|
|
|
+ const time = Date.now();
|
|
|
+ const zipPath = `app/public/upload/${ctx.tender.id}/stage/fu_jian_zip${time}.zip`;
|
|
|
+ const size = await ctx.service.stageAtt.compressedFile(fileIds, zipPath);
|
|
|
+
|
|
|
+ // 解决中文无法下载问题
|
|
|
+ const userAgent = (ctx.request.header['user-agent'] || '').toLowerCase();
|
|
|
+ let disposition = '';
|
|
|
+ if (userAgent.indexOf('msie') >= 0 || userAgent.indexOf('chrome') >= 0) {
|
|
|
+ disposition = 'attachment; filename=' + encodeURIComponent(zipFilename);
|
|
|
+ } else if (userAgent.indexOf('firefox') >= 0) {
|
|
|
+ disposition = 'attachment; filename*="utf8\'\'' + encodeURIComponent(zipFilename) + '"';
|
|
|
+ } else {
|
|
|
+ /* safari等其他非主流浏览器只能自求多福了 */
|
|
|
+ disposition = 'attachment; filename=' + new Buffer(zipFilename).toString('binary');
|
|
|
+ }
|
|
|
+ ctx.response.set({
|
|
|
+ 'Content-Type': 'application/octet-stream',
|
|
|
+ 'Content-Disposition': disposition,
|
|
|
+ 'Content-Length': size,
|
|
|
+ });
|
|
|
+ // const readStream = fs.readFileSync(path.resolve(this.app.baseDir, zipPath));
|
|
|
+ // ctx.body = fs.createReadStream(path.resolve(this.app.baseDir, zipPath));
|
|
|
+ ctx.body = fs.readFileSync(path.resolve(this.app.baseDir, zipPath));
|
|
|
+ // readStream.on('close', () => {
|
|
|
+
|
|
|
+ // });
|
|
|
+ if (fs.existsSync(path.resolve(this.app.baseDir, zipPath))) {
|
|
|
+ fs.unlinkSync(path.resolve(this.app.baseDir, zipPath));
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ this.log(error);
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
/**
|
|
|
* 合同支付上传附件
|