multer 如何传数据到后面的callback
发布于 2个月前 作者 pasicopan 200 次浏览 来自 问答

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

  • express 4.11.1
  • multer 0.1.6
  
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);
 });
 
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

回到顶部