使用 Node/Express 上传到 S3

Upload to S3 with Node/Express

当我通过下面的过程使用 aws-sdk 和 Node/Express 上传到 S3 时,我没有收到任何错误并登陆 "successfully uploaded" 页面。但是,新文件没有出现在我的亚马逊存储桶中。我哪里错了?

感谢您的帮助!

var aws             = require('aws-sdk');
var multerS3        = require('multer-s3');
var  multer          = require("multer");



aws.config.update({
    secretAccessKey: 'MYKEY',
    accessKeyId: 'MYKEY',
    region: 'us-east-2'
});

var s3 = new aws.S3();

var upload = multer({
  storage: multerS3({
    s3: s3,
    bucket: 'medstayfiles',
    metadata: function (req, file, cb) {
      cb(null, {image: file.fieldname});
    },
    key: function (req, file, cb) {
      cb(null, Date.now().toString())
    }
  })
})

发帖:

router.post('/', upload.array('photos', 1), function(req, res, next) {
  res.send('Successfully uploaded')
})

表格:

<form action="/rentals" method ="POST"> 
<input type="file" name="image" id="image">
<div class="form-group"> <button>Submit!</button> </div>
</form>

我明白了。不确定是什么导致了错误,但这修复了它:

在表格中我添加了 enctype="multipart/form-data" 所以:

<form action="/rentals" method ="POST" enctype="multipart/form-data">

我还将元数据更改为以下内容:

var upload = multer({
    storage: multerS3({
        s3: s3,
        bucket: 'mybucketname',
        key: function (req, file, cb) {
            var fileExtension = file.originalname.split(".")[1];
            var path = "uploads/" + req.user._id + Date.now() + "." + fileExtension;
            cb(null, path); 
        }
    })
});

这对我有用!