【问题标题】:How to correctly upload Amazon S3 Images in ASP.Net Core 2如何在 ASP.Net Core 2 中正确上传 Amazon S3 图像
【发布时间】: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


【解决方案1】:

我终于明白是什么问题了。我使用 Angular 将 base64 字符串发送到 ASP.NET Core 2,然后将其转换为 byte[] 并发送到 Amazon S3。对于那些尝试上传 byte[](来自 base64)并在 amazon S3 上得到一个很小的方形图像的人,也许你使用了错误的 base64 字符串部分。

基本上,你不应该使用字符串的第一部分,它的内容类似于:image/png;base64。您应该只将“,”之后的内容转换为字节数组。我不知道。

有几个关于从 base64 转换为字节数组的教程。

【讨论】:

    猜你喜欢
    • 2012-07-17
    • 2011-04-16
    • 2019-09-20
    • 2013-01-28
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多