2017-06-28 111 views
1

我正在構建一個用於上傳圖片並將它們直接存儲在S3存儲上的API。爲此,我使用Postman.Method是POST,輸入類型是file.When使用req.files或req.file時,我得到的是未定義的。使用multer在S3 API上上傳圖片返回undefined

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,我得到這個:enter image description here

所以,似乎我有它req.body,但我怎麼能從這裏拿走它?

+0

嘗試使用S3的'upload'方法而不是'putObject'。 – shawon191

+0

謝謝!我用multer-s3模塊,它工作。我能夠上傳s3存儲上的文件。謝謝! –

回答

1

旁邊multer,我安裝幷包括multerS3模塊:

var multerS3 = require('multer-s3'); 

然後,我配置它。 I,還與一個形式測試了它在其上施加我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存儲上傳成功。