multer mulsters3和body-parser给出类型错误

时间:2019-04-07 11:28:27

标签: node.js amazon-s3 aws-sdk multer body-parser

我创建了一个form,允许登录的用户将事件信息上传到我的Web应用程序中。表单中的文本被制成JSON对象,然后从那里修改为现有的JSON文件并上传到Amazon-S3。此外,用户可以上传带有事件的图像,该图像分别在/ imgs子文件夹(位于同一存储桶中)中上传到S3,然后在图像完成上传后将链接放入JSON对象(包含在请注意,图片和json上传都是异步的,前者会比后者更快地发生)。 index.js

app.post('/newEV*', isLoggedIn, myDB.upload.single('image'), function(req, res) {
  var myURL = req.path.replace('/newEV', '');

  fetch(myURL).then(function (events){
    var myID;
    var x = 0;
    while(!myID) {
      if(!events[x]) {
        myID = x;
      } else {
        x++;
      }
    }
    myDB.newEvent(myURL, req.body.name, req.body.desc, req.body.loc, req.file.filename, req.body.link, req.body.cap, req.body.date, req.body.time, myID, events);
    res.redirect('/edit' + myURL);
  });

});

isLoggedIn是用于检查用户身份的中间件,下面可以看到myDB.upload.array 应该将图像从表单上传到s3。
myDB

module.exports = {

    upload : multer({
        storage: mulsters3({
          s3: new aws.S3(),
          bucket: S3_BUCKET,
          key: function(req, file, cb) {
              console.log(file);
              cb(null, "imgs/" + file.originalname);
          }
        })
    }),
newEvent : function(cata, name, desc, loc, pic, link, cap, date, time, id, events) {
        var newEventObj = {
            "id": id,
            "name": name,
            "desc": desc.replace('/\r?\n|\r/', '<br/>'),
            "location": loc,
            "picture": pic,
            "link": link,
            "cap": cap,
            "date": date,
            "time": time
        }

        var myJson;
        switch (cata) {

            case "Pr":
                myJson = 'primaryEvents.json';
                break;

            case "Sc":
                myJson = 'secondaryEvents.json';
                break;

            case "Po":
                myJson = 'postEvents.json';
                break;
        }

        events[id] = newEventObj; // Add new event to JSON object
        signs3(JSON.stringify(events), myJson);

    }
}

当前,在执行代码时,出现此错误:

(node:21049) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'filename' of undefined
    at /home/tommy/Documents/cWeek044/index.js:292:79
    at process._tickCallback (internal/process/next_tick.js:68:7)

为什么会发生此错误?非常感谢

0 个答案:

没有答案