我正在通过 AJAX 将文件上传到 Amazon S3(使用浏览器文件 API 并将实际上传脚本存储在 Amazon S3 上作为 iframe 以解决 Amazon S3 跨站点问题,感谢 jquery-file-upload 的想法) . 我有这个工作,它适用于小文件(< 50 MB 左右)。但是,我希望在 Amazon S3 上存储超大文件。我想存储配置的虚拟机之类的东西,它的大小可能超过 10 GB。
根据我对 HTML5 文件 API 的理解,可以在客户端将大文件分块并上传。然后,服务器代码负责将文件连接在一起并将文件移动到 S3。我理解这个概念,但不确定最佳实施方式。
我使用 Heroku 作为应用服务器,我通常将文件直接上传到 Amazon S3,完全跳过 Heroku 的服务器。但是,如果我将上传内容分成小块,则必须先编写一些代码来连接这些部分,然后才能将其实际放入 S3。但是 Heroku 对它们可以使用多少数据有一些限制,而且我认为加入 10 GB 文件不会在他们的服务器上有效地工作(不是 100% 肯定,但值得怀疑)。
所以我目前的想法是我必须在 Amazon EC2 服务器上设置一个 Web 服务应用程序,我的应用程序将上传部分发布到该服务器上。然后,EC2 应用程序负责加入上传部分并将最终加入的文件放入 S3。将文件加载到 S3 后,S3 会向托管在 Heroku 上的原始应用程序发送响应,然后该应用程序会创建一个指向 S3 中存储文件的资源。
有没有什么现实的方法可以让一个单独的 EC2 服务器加入文件?在 EC2 和 S3 之间发送文件是免费的,但我不想维护 2 个应用程序来完成我想要的事情(Heroku 上的主应用程序和 EC2 上的文件加入应用程序)。