gpt4 book ai didi

amazon-web-services - 为什么 AWS Gateway 为从 S3 流式传输的图像设置了错误的内容长度?

转载 作者:行者123 更新时间:2023-12-02 20:26:21 25 4
gpt4 key购买 nike

使用适用于 C# .Net Core 2.0 的现成无服务器模板,我创建了一个包含图像的 S3 存储桶 - 我想在浏览器中显示它。

在本地运行 webapi,我可以很好地查看图像,甚至不包含内容长度 header 。通过 https://apidemo.boro2g.co.uk/media/mirrored-faces.jpg 访问时内容长度被更改为大于应有的长度。原始图像大约为 300kb,但在 API 网关之外大约为 400kb。

我想使用代理对图像应用一些自定义安全性,因此不希望它们公开,为了进行测试,您可以在 https://s3-eu-west-1.amazonaws.com/boro2g-photogallery/mirrored-faces.jpg 查看原始版本

我已经尝试在 API 中添加二进制媒体类型,但这些似乎没有任何效果。

“获取”图像的代码非常简单:

[HttpGet("{key}")]
public async Task Get(string key)
{
try
{
var getResponse = await S3Client.GetObjectAsync(new GetObjectRequest
{
BucketName = BucketName,
Key = key
});

Response.ContentType = getResponse.Headers.ContentType;

getResponse.ResponseStream.CopyTo(Response.Body);
}
catch (AmazonS3Exception e)
{
Response.StatusCode = (int)e.StatusCode;
var writer = new StreamWriter(Response.Body);
writer.Write(e.Message);
}
}

为什么 API 会错误地更新内容长度

仅供引用静态txt文件加载没有问题:https://apidemo.boro2g.co.uk/media/test.txt

最佳答案

最后我发现有效的解决方案是:

  1. 在 API 网关的设置中,添加二进制媒体类型:*/*
  2. {proxy+}方法“Method Response”上添加200响应 header 并添加 header Content-Type。最后发布你的api

这里的第二步可能不是必需的,但我发现/在我做出更改之前没有启动。

关于amazon-web-services - 为什么 AWS Gateway 为从 S3 流式传输的图像设置了错误的内容长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49830497/

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