在node js + express中由强大上传的处理文件

问题描述 投票:0回答:1

我正在使用强大的文件上传功能。文件完全上传后,我想使用jimp来制作相同尺寸的副本。

以前我在form.on('end', ...)事件上调用了jimp调整大小,但是似乎文件一直到那时都已部分上传,并且在上传过程中jimp尝试访问它时,文件仍然损坏!

因此,我肯定需要在处理form.on('end', ...)之后调用jimp。

这是我在做什么-

app.post("/upload", function (req, res) {
    let form = new IncomingForm()

    var file_path, file_name

    form.on('fileBegin', (name, file) => {
        // process upload here. should be jPG / PNG, smallest edge should be 1200px, compress to 720px and 240px
        // save raw file
        let dt = new Date()
        file_name = dt.getTime() + '.' + file.name.split('.').pop()
        file_path = __dirname + '/upload/raw/' + file_name
        file.path = file_path
    })

    form.on('file', function (name, file) {

    })

    form.on('end', () => {

    })

    form.parse(req)
    resizer(file_path)

    res.json(
        file_name
    )
})

resizer(file_path)是我正在执行所有jimp处理的函数。但是,这似乎是异步调用的,因此在调用该文件时不存在文件。异步等待似乎没有用,因为此过程是事件驱动的。完成所有处理后,有没有办法调用大小调整器?还是有同样的重大事件?

javascript node.js formidable
1个回答
0
投票

似乎就像在form.parse的回调中调用函数一样。

供参考-最后,您应该这样做-

form.parse(req, (error, field, file) => {
    resizer(file_path)
})

[如果将来有人偶然发现这种情况,请在此处保留此线程

© www.soinside.com 2019 - 2024. All rights reserved.