gpt4 book ai didi

node.js - 为 AWS 上的 Skipper 上传创建公共(public) URL

转载 作者:太空宇宙 更新时间:2023-11-03 21:59:17 26 4
gpt4 key购买 nike

我正在使用 Skipper.js 将图像上传到 Amazon Web Service S3,但使用 无法为上传的文件创建公共(public) URL>Skipper.js。我不想使用 Skipper-Disk,我想上传到 S3 并能够创建可公开访问的 URL 来下载该文件。我的代码如下,这就是我所做的一切

 imageUpload: function(req, res) {
//console.log(req);
req.file('avatar').upload({
adapter: skipper,
key: 'key',
secret: 'secret',
bucket: 'bucketName'
}, function(err, fileUploaded){
if (err) {
console.log(err);
return res.negotiate(err);
}

if (fileUploaded.length === 0) {
return res.badRequest('No files uploaded');
}

var imageUrl = fileUploaded[0].extra.Location;
var imageKy = fileUploaded[0].extra.Key;
ImageUpload.create({urlLink: imageUrl, imageKey: imageKy}).then(function(urlAdded){
if (urlAdded) {
//return res.negotiate(err);
//The linkAdded is the link the s3 provides to the image E.g https://bucket.s3.amazonaws.com/filename
return res.json({linkAdded: urlAdded});
}
})
.catch(function (err){
return res.badRequest(err);
});
});
}

最佳答案

看起来您正确地完成了所有上传代码,假设您在文件顶部有:

var skipper = require('skipper-s3')

实际修复与 S3 配置有关。在 AWS S3 控制台中,选择您的存储桶后,您需要选择属性 -> 权限 -> 编辑存储桶策略。

添加此代码以使您的存储桶具有公共(public) GET 请求,但将资源参数中的“bucketName”替换为您的存储桶名称:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucketName/*"
}
]
}

关于node.js - 为 AWS 上的 Skipper 上传创建公共(public) URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31566758/

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