gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 23:21:37 25 4
gpt4 key购买 nike

我想将图像上传到亚马逊网络服务器,为此我正在使用带有 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 header ,您需要定义 Metadata 部分:

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

};

关于node.js - 使用 aws-sdk 使用 nodejs 将图像上传到 s3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33430596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com