【发布时间】:2018-07-30 11:14:11
【问题描述】:
对此有几个问题,但不知何故,他们都没有解决我的问题。我想做的就是在我的网站上显示 Amazon S3 图像。
一些信息:
我正在硬编码指向图像源属性的直接链接(出于测试目的),但图像永远不会出现。
每当我访问直接链接时,我都会得到一个灰色方形小图像(与我尝试上传的图像不同)。
我还公开了我的存储桶策略并更新了 CORS。这是他们的设置:
存储桶政策
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::testbucket/*"
}
]
}
CORS 政策
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
我如何上传:
var request = new PutObjectRequest
{
BucketName = "testbucket",
Key = "test",
InputStream = new MemoryStream(image.Content),
ContentType = image.MimeType // "image/png"
};
var response = await Client.PutObjectAsync(request);
我认为上传是错误的,但是我还没有找到任何关于如何成功上传byte[] 图像文件的 ASP.NET 核心教程。什么可能是错的?任何帮助将不胜感激。
【问题讨论】:
-
“每当我访问直接链接时,我都会在 html 上获得一个有效的 base64 图像。” 我不太确定这意味着什么,但您的图像需要是二进制的,而不是 base64,在一个文件中。
-
@Michael-sqlbot 每当我尝试访问图像时,我都会得到一个原始的 base64 文件。但是,当我直接(不是以编程方式)上传文件时,amazon s3 按预期工作(我可以在网站上看到图像。我已经更新了我的问题,因为现在我认为这是 ASP.Net Core 2 和 Amazon S3 兼容性的问题.
-
我建议
image.Content包含上传图像的base64 表示。您的存储桶和 CORS 策略都不应与看似正常但导致意外有效负载的上传相关。显示代码以阐明image的对象类型以及您如何获得它可能会有所帮助。 -
@Michael-sqlbot 我对编码和亚马逊 s3 有点陌生。我现在已经想通了。我会回答我自己的问题谢谢
标签: amazon-web-services amazon-s3 asp.net-core-2.0