Node.js-KOA多图片压缩zip下载

const JSZip = require('jszip');

/**
     * 选中多个订单 然后导出其中用户的上传的身份证图片正反面
     * @param {*} data 
     */
    static async imgZip(data) {

        data.trade_ids = JSON.parse(data.trade_ids)

        let arr = "'" + data.trade_ids.join("','") + "'";
        //先循环查出地址
        let info = await super.query(`
            SELECT b.*,c.path,c.pathback FROM (
            SELECT * from (
            SELECT name,idCard,credit_no,trade_id from laborpersontemp where trade_id in (${arr})
            UNION ALL 
            SELECT name,idCard,credit_no,trade_id from laborpersonrecord where trade_id in (${arr})
            ) a GROUP BY a.idCard,a.credit_no
            ) b INNER JOIN laborpersonmain c on b.idCard=c.idCard and b.credit_no = c.credit_no and c.status = '2'
            GROUP BY c.idCard;
        `);

        let len = info.length;
        var zip = new JSZip();

        for (let i = 0; i < len; i++) {
            let name1 = `${info[i].idCard}_${info[i].name}正.${info[i].path.split('.')[info[i].path.split('.').length - 1]}`;
            let name2 = `${info[i].idCard}_${info[i].name}反.${info[i].path.split('.')[info[i].path.split('.').length - 1]}`;

            let buffer1 = Buffer.from(fs.readFileSync(path.resolve(`${Config.rootPath}/public/${info[i].path}`)));
            let buffer2 = Buffer.from(fs.readFileSync(path.resolve(`${Config.rootPath}/public/${info[i].pathback}`)));
            zip.file(name1, buffer1, { base64: true });
            zip.file(name2, buffer2, { base64: true });
        }

        // // 压缩
        return await zip.generateAsync({
            // 压缩类型选择nodebuffer,在回调函数中会返回zip压缩包的Buffer的值
            type: "nodebuffer",
            // 压缩算法
            compression: "DEFLATE",
            compressionOptions: {
                level: 9
            }
        })
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值