sdk使用nodejs将图像上传到s3

我想将图像上传到amazon web服务器,并且我正在使用带有nodejs的aws-sdk。

我可以将图像上传到s3存储桶,但是当我点击URL访问它们时,我得到了访问被拒绝的错误。

这是我的配置

     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);
     }) 

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

你能告诉我这个配置有什么问题吗?我也想知道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'
    }

 };
链接地址: http://www.djcxy.com/p/30159.html

上一篇: sdk to upload images to s3 using nodejs

下一篇: Google API Client Library freezing up in IIS when making request