【问题标题】:What is the best way to upload files to a storage service? (Amazon S3 or EdgeCast)将文件上传到存储服务的最佳方式是什么? (亚马逊 S3 或 EdgeCast)
【发布时间】:2011-05-26 12:24:42
【问题描述】:

我们有一个 Web 应用程序需要使用 EdgeCast 或 Amazon S3 存储上传的图像。为此,我们需要先将这些图像重新上传到 EdgeCast / S3。我能想到的选项有很多:

  1. 执行内联 curl 重新上传,这将使用所需的 EdgeCast / S3 API 上传图像。缺点是并发上传时服务器负载会很大。
  2. 队列重新上传。我知道这是可能的,但我不知道该怎么做。
  3. 不必费心重新上传并直接上传从客户端到 EdgeCast / S3。
  4. 挂载 EdgeCast / S3 的 FTP 到文件系统中,然后只需复制上传的文件,让 FTP 守护进程完成剩下的工作。

哪个是最好的解决方案,还有其他的吗?我怀疑是 1 或 2。

编辑:我的应用程序是 PHP 的

【问题讨论】:

  • 为您添加了 edgecast 标签。你的图像现在在哪里?你想用什么语言进行上传(你必须从某个地方调用 curl,即使它是一个 bash 脚本)。

标签: php curl upload amazon-s3 edgecast


【解决方案1】:

不确定 EdgeCast,但我知道使用 Amazon S3 的最佳方法是将文件直接发布到文件服务器。见http://doc.s3.amazonaws.com/proposals/post.html

这样做,您将提供一个 HTML FORM,其中包含一些字段,如文件夹 ID、文件名、公钥、时间戳等,以确保它是安全的,并且只有您可以上传到服务器。一旦从他们重定向到的页面上传完成,服务器将重定向他们的浏览器,您可以检查查询字符串以确定上传是否成功,然后将 FileID 记录到您的数据库中。

非常适合减少服务器上的负载并为用户提供更快的体验,但是如果上传成功但数据库插入失败,则可能会导致孤立文件。

【讨论】:

  • 您不必为此公开您的密钥吗?
  • 没有原因没有!那么它就不是秘密了。您只需使用您的密钥生成 HASH,然后将 HASH 发送到 S3,S3 将使用您的密钥来验证您的 HASH
  • 这里有一个 php 教程:ioncannon.net/programming/1539/… 如果你想搜索它,然后搜索“amazon s3 CORS”,应该会弹出分配。
【解决方案2】:

EdgeCast 存储支持 Rsync/sFTP 配置以自动从存储服务器同步内容。 EdgeCast 还支持“反向代理”或“客户来源”配置,以自动将内容从另一个 Web 服务器拉入缓存。您可以将 S3 用作此客户来源位置或使用 EdgeCast 自己的云存储服务或 EdgeCast 网络之外的任何其他 Web 服务器。

【讨论】:

    【解决方案3】:

    我所做的是将文件上传到临时目录,然后运行一个 cron 脚本,将文件放到 AWS 上,以免导致最终用户的上传过程花费更长的时间。

    【讨论】:

      【解决方案4】:

      AWS 提供了一个SDK for PHP 来执行此操作。它甚至支持分段上传,这对开发者来说是个好消息。

      应该注意的是,AWS SDK for PHP 也将执行重试逻辑,并且(如果您使用 Multipart,您应该这样做)可以恢复失败的上传。

      【讨论】:

        猜你喜欢
        • 2011-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-23
        • 2023-03-10
        • 1970-01-01
        相关资源
        最近更新 更多