我正在构建一个用于上传图像并将其直接存储在S3存储上的API。为此,我使用Postman.Method是POST,输入类型是file。当我使用req.files或req.file时,我得到了未定义。
Utils.js:
getS3SignUrl: function( uri ){
return s3_client.getSignedUrl('putObject',{Bucket:config.aws.bucket,Key:uri,ACL :"public-read"})
}
在主文件中我使用了这些:
var bodyParser = require('body-parser');
var upload = require('multer')();
var utils = require('../service/utils.js');
router.post('/edit-profile', upload.single('newfile'), function(req, res) {
console.log(req.file);
});
});
在控制台中,我得到了未定义,但是当我使用调试器和req.body时,我得到了这个:
所以,似乎我在req.body中有它,但我怎么能从这里拿走呢?
答案 0 :(得分:1)
除了multer之外,我安装并包含了multerS3模块:
var multerS3 = require('multer-s3');
然后,我配置了它。我也使用我应用enctype="multipart/form-data"
router.post('/ceva', multer({ storage: multerS3({ s3: s3_client, bucket: "****", acl: '**', metadata: function (req, file, cb) { cb(null, {fieldName: file.fieldname}); }, key: function (req, file, cb) {
cb(null, "users/10/1"); } }) }).single('newfile'), function(req, res) {
console.log(req.files);
res.send('da');
});
因此,文件已在S3存储上成功上传。