我正在使用强大的文件上传功能。文件完全上传后,我想使用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处理的函数。但是,这似乎是异步调用的,因此在调用该文件时不存在文件。异步等待似乎没有用,因为此过程是事件驱动的。完成所有处理后,有没有办法调用大小调整器?还是有同样的重大事件?
似乎就像在form.parse的回调中调用函数一样。
供参考-最后,您应该这样做-
form.parse(req, (error, field, file) => {
resizer(file_path)
})
[如果将来有人偶然发现这种情况,请在此处保留此线程