c# - 将图像上传到S3

标签 c# asp.net-mvc asp.net-mvc-3 amazon-s3

我正在开发一个图像托管网站,但我遇到了一些麻烦。我选择 Amazon S3 是因为它速度快、可扩展并且采用即用即付模式。

当我从网站上传图像时,我需要在服务器上处理它们 - 创建 3 种不同的尺寸,将数据插入数据库,然后准备上传到 S3(图像的所有 3 种尺寸) )。

我目前正在使用 plupload 进行上传,并且我现在将其全部设置为使用我的数据库作为图像存储 - 仅用于测试目的。但我刚刚意识到 - 上传到我的网络服务器、处理然后上传到 S3 意味着每个图像的上传时间加倍,对吗?

有什么聪明的方法来处理这种情况吗?

最佳答案

我们正在做类似的事情,处理 S3 中的文件和存储。主要区别在于我们的网络服务器和处理服务器位于 EC2 上,因此它们不会产生任何往返 S3 的传输成本,并且它们具有到 S3 的非常高的带宽。是否可以在 EC2 实例上运行图像调整大小过程?您可以:

  1. 直接接受上传到 EC2 实例上的服务器进程,立即处理它们,然后将图像保存到 S3,或者...

  2. 将图像直接上传到 S3,以某种方式向您的 EC2 进程发出图像到达的信号(可能是 SQS 队列),然后让您的服务器进程通过从 S3 抓取文件、处理图像并保存来响应该信号调整大小的图像返回到S3。

基本上,我是说您应该利用这一点(来自 AWS 网站上的 S3 描述):

There is no Data Transfer charge for data transferred between Amazon EC2 and Amazon S3 within the same Region or for data transferred between the Amazon EC2 Northern Virginia Region and the Amazon S3 US Standard Region.

关于c# - 将图像上传到S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6027985/

相关文章:

c# - 为什么要为私有(private)集会使用强名称呢?

c# - 在运行时修改 linq 查询

c# - EF 生成的类和模型之间的关系?

c# - 避免在 View 中添加 if/else 逻辑

asp.net - If else 在 Web 网格列中

asp.net-mvc - 如何选择下拉列表值并在mvc3中显示?

c# - 方法参数的属性

c# - 无法通过嵌套类型 'FormMain' 访问外部类型 'FormMain.ImageDelegateClass' 的非静态成员

c# - 显示月份日历模型并与用户交互的更好方法

c# - 如何在 ASP.NET MVC Razor 中编码 '/'