【问题标题】:Nodejs multer options don't fireNodejs multer 选项不会触发
【发布时间】:2015-10-20 06:04:09
【问题描述】:

我正在尝试使用 multer 保存文件,但它并不想工作:

var storage = multer.diskStorage({
    destination: function (req, file, cb) {
    cb(null, './')
},
filename: function (req, file, cb) {
    cb(null, file.originalname + '-' + Date.now() + '.' + path.extname(file.originalname));
    }
});

var upload = multer({ storage: storage,
onFileUploadComplete : function (file) {
    console.log('Completed file!');
},
onParseStart : function() {
     console.log('whatevs');
}});

app.post('/upload' ,upload.single('thisisme'), function(req,res) {});  

文件确实被保存,但 ParseStart 或 UploadComplete 从未被触发。这是为什么?我也尝试使用 app.use ( multer ... );

【问题讨论】:

    标签: node.js multer


    【解决方案1】:

    这是因为您正在尝试使用旧的 multer api。在当前版本中没有事件处理程序:onFileUploadCompleteonParseStart。请查看文档以获取 api 详细信息:https://github.com/expressjs/multer

    这部分代码看起来不错:

    var storage = multer.diskStorage({
        destination: function (req, file, cb) {
        cb(null, './')
    },
    filename: function (req, file, cb) {
        cb(null, file.originalname + '-' + Date.now() + '.' + path.extname(file.originalname));
        }
    });
    

    这也没关系:

    app.post('/upload' ,upload.single('thisisme'), function(req,res) {});
    

    这是错误的:

    var upload = multer({ storage: storage,
    onFileUploadComplete : function (file) {
        console.log('Completed file!');
    },
    onParseStart : function() {
         console.log('whatevs');
    }});
    

    改成这样:

    var upload = multer({ 
      storage: storage,
      fileFilter:function(req, file, cb) {
        //Set this to a function to control which files should be uploaded and which should be skipped. It is instead of onParseStart.
      }
    });
    

    没有什么可以代替onFileUploadComplete。但是:

    app.post('/upload' ,upload.single('thisisme'), function(req,res) {
    //this is call when upload success or failed
    });
    

    你可以把它改成这样:

    app.post('/upload', function (req, res) {
      upload.single('thisisme')(req, res, function (err) {
        if (err) {
          // An error occurred when uploading
          return
        }
    
        // Everything went fine, and this is similar to onFileUploadComplete
      })
    })
    

    【讨论】:

      猜你喜欢
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 2015-06-12
      • 2019-06-27
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      相关资源
      最近更新 更多