1

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

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

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

编辑:我的应用程序是 PHP

4

4 回答 4

3

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

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

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

于 2010-12-16T11:54:23.210 回答
1

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

于 2010-12-17T01:51:07.810 回答
0

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

于 2010-12-16T12:14:29.307 回答
0

AWS为 PHP提供了一个开发工具包来执行此操作。它甚至支持多部分上传,这对开发人员来说是个好消息。

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

于 2010-12-17T01:59:31.430 回答