multer 如何传数据到后面的callback
求教大牛,我想从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.files
,req.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) 哦。 虽然自己修改源代码也容易,但后来我发现,我需要的其实是上传图片后的名称,后面可以通过req.files 找到,所以就不改源代码了。