multer 如何传数据到后面的callback
发布于 10 年前 作者 pasicopan 4287 次浏览 最后一次编辑是 8 年前 来自 问答

求教大牛,我想从onFileUploadComplete 传数据到后面的function,如何做到? 或者,如何在onFileUploadComplete 里面,使用req.end()?

  • express 4.11.1
  • multer 0.1.6 <pre>
    var mwMulter1 = multer({ dest: ‘public/images/uploads/’, rename: function(fieldname, filename){ console.log(‘new rename,filename is:’,filename); return filename + Date.now(); }, onFileUploadComplete: function (file) { done = true; var t = Date.now(); } }); app.post(’/upload’,mwMulter1, function(req, res, next){ var id = ‘ckeditor_src’; var t = t// 我想从onFileUploadComplete 里面获得 t 变量 res.end(‘t is:’+t); }); </pre>
3 回复

onFileUploadComplete()函数完整参数版是:onFileUploadComplete(file, req, res),你可以直接在这里拿到res,req的,做能做的各种操作。。所以也可以通过如向req.filesreq.body这些里挂属性往后面的回调里传你想传的数据 https://github.com/expressjs/multer#onfileuploadcompletefile-req-res

我觉得你可以在绑定multer中间件后再绑定一个自己的中间件:

app.use( multer(....) );
app.use( function( req, res next ) {
    req.body.t = Date.now();
	next();
} );
app.post( '/upload', function( req, res ) {
    res.end( 't is ' + req.body.t );
} );

有一定的时间差,但是应该在可以接受的范围内。当然具体还是要看楼主的需求了。

谢谢各位大牛的指导。

我的multer 是0.1.6版,看源代码,完整版本不是onFileUploadComplete(file, req, res) 哦。 QQ截图20150421170052.png 虽然自己修改源代码也容易,但后来我发现,我需要的其实是上传图片后的名称,后面可以通过req.files 找到,所以就不改源代码了。 QQ截图20150421170502.png

回到顶部