这是一个较早的问题,但对于任何遇到此问题的人来说,一旦我将文件公开,我就能够访问我的图像,网址为https://mybucket.s3.amazonaws.com/myfolder/afile.jpg
在我的情况下,我已经私下上传了图片,所以我无法访问。我执行了以下代码
const AWS = require('aws-sdk')
const myBucket = 'BUCKET_NAME'
const myKey = 'FILE_NAME.JPG'
const signedUrlExpireSeconds = 60 * 1
const s3 = new AWS.S3({
accessKeyId: "ACCESS_KEY_ID",
signatureVersion: 'v4',
region: 'S3_REGION',
secretAccessKey: "ACCESS_SECRET"
});
const url = s3.getSignedUrl('getObject', {
Bucket: myBucket,
Key: myKey,
Expires: signedUrlExpireSeconds
})
console.log(url)
您可以通过以下方式访问您的图片:
https://s3.amazonaws.com/bucketname/foldername/imagename.jpg
或者如果没有文件夹,您可以执行以下操作:
https://s3.amazonaws.com/bucketname/imagename.jpg
如果有帮助,请点赞。它符合2017年5月30日的最新AWS标准。
您正在尝试访问的存储桶必须使用指定的端点地址。请将所有未来的请求发送到此端点。
- pmiranda最简单的方法之一是创建一个存储桶策略。
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "MakeItPublic",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::yourbucketname.com/*"
}]
}
现在似乎可以简单地右键单击存储桶中的任何文件夹,然后选择“公开”来使该文件夹中的所有内容变为公开状态。但是这可能不适用于存储桶本身。
未来参考,如果您想访问Amazon S3中的文件,则URL应该类似于:
bucketname.s3.region.amazonaws.com/foldername/image.png
例如:my-awesome-bucket.s3.eu-central-1.amazonaws.com/media/img/dog.png
不要忘记将对象设置为公共访问。
在S3中,如果您单击对象,则会看到一个名为“对象URL”的字段。 这就是对象的Web地址。
请确保使用与在S3上上传和存储时相同的大小写访问图像。 例如,如果您上传了image_name.JPG,则应使用相同的名称,而不是image_name。jpg
我在寻找解决无法访问图像的类似问题时遇到了这个问题。
事实证明,文件名中带有%
的图像在被访问时,必须将%
符号的URL编码为%25
。
例如,photo%20of%20a%20banana%20-%2019%20june%202016.jpg
需要通过photo%2520of%2520a%2520banana%2520-%252019%2520june%25202016.jpg
进行访问。
然而,对完整路径进行URL编码对我们没有起作用,因为斜杠等会被编码,路径将无法正常工作。在我们的特定情况下,仅在所有访问路径中用%25
替换%
就可以解决问题。
在控制台上,右键单击您要访问的图像,然后单击“使公共”;完成后再次右键单击图像,单击“属性”,从扩展视图中复制链接。