使用aws-sdk使用nodejs将图像上传到s3

我想上传图片到amazon web services器,为此,我正在使用aws-sdk和nodejs。

我能够上传图片到S3桶,但是当我点击URL来访问他们,我得到了访问被拒绝的错误。

这是我的configuration

var AWS = require('aws-sdk'); //aws credentials AWS.config = new AWS.Config(); AWS.config.accessKeyId = "<access_key>"; AWS.config.secretAccessKey = "<secret_key>"; AWS.config.region = "ap-southeast-1"; AWS.config.apiVersions = { "s3": "2006-03-01" } var s3 = new AWS.S3(); var bodystream = fs.createReadStream(req.files.pic.path); var params = { 'Bucket': '<bucket_name>', 'Key': 'uploads/images/' + req.files.pic.name, 'Body': bodystream, 'ContentEncoding': 'base64', 'ContentType ': 'image/jpeg' }; //also tried with s3.putObject s3.upload(params, function(err, data){ console.log('after s3 upload====', err, data); }) 

图像上传成功,但其内容types是应用程序/八位字节。 此外,我认为有一些权限问题,因为当我添加一个新的权限,然后我能够下载图像,但无法看到它。

你能告诉我这个configuration有什么问题吗?我也想知道s3.upload和s3.putObject方法之间的区别。

为了指定Content-Type标题,你需要定义Metadata部分:

 var params = { 'Bucket': '<bucket_name>', 'Key': 'uploads/images/' + req.files.pic.name, 'Body': bodystream, 'ContentEncoding': 'base64', Metadata: { 'Content-Type': 'image/jpeg' } };