使用 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);
}
})
});
这对我有用!
当我通过下面的过程使用 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);
}
})
});
这对我有用!