multiparty 和 busboy

multiparty 和 busboy 都可处理form类型数据,用于文件下载解析

使用方法:

const multipartry = require('multiparty');
const busboy = require('busboy');

new Promise(async (resolve, reject) => {
        const form = new multipartry.Form(config)

        //  multipartry 保留hash名写法
        form.parse(req, (err, fields, files) => {
            if (err) {
                reject(err)
                return
            }
            console.log('[long] rrr', fields, files)
            resolve({
                fields,
                files,
            })
        })

        // // multipartry : 保留文件名写法
        // form.on('part', async function (part, a, b, c) {
        //     if (part.filename) {

        //         const saveTo = path.join(uploadDir, part.filename)
        //         const writeStrem = fs.createWriteStream(saveTo)
        //         part.pipe(writeStrem)
        //     }
        // })
        // form.parse(req)

        // // busboy 保留文件名写法, 如果需要hash,则需要自行实现
        // const bb = busboy({ headers: req.headers })
        // bb.on('file', (name, file, info) => {
        //     console.log('[long] kkk: ', name, file, info.filename)
        //     const saveTo = path.join(uploadDir, info.filename)
        //     file.pipe(fs.createWriteStream(saveTo))
        // });
        // bb.on('close', () => {
        //     resolve({
        //         file: 'success'
        //     })
        // })
        // req.pipe(bb)
    })
}

需要判断路径存在

  await new Promise((resolve, reject) => {
        fs.stat(uploadDir, (err) => {
            if (err) {
                fs.mkdirSync(saveTo)
            }
            resolve()
        })
    })

使用MD5 hash可以防止文件重名,且节省空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值