使用PHP中的分块上传1GB文件

rjh*_*a94 37 php upload large-files

我有一个Web应用程序,可以接受最多4 MB的文件上传.服务器端脚本是PHP,Web服务器是NGINX.许多用户要求大幅提高此限制以允许上传视频等.

然而,PHP的这个问题似乎没有简单的解决方案.首先,在客户端,我正在寻找允许我在传输过程中块文件的东西.SWFUpload似乎没有这样做.我想我可以使用Java FX流式传输上传(http://blogs.oracle.com/rakeshmenonp/entry/javafx_upload_file),但我在PHP中找不到任何等效的request.getInputStream.

增加浏览器client_post限制或php.ini上传或max_execution时间并不是真正大文件(~1GB)的真正解决方案,因为浏览器可能会超时并想到存储在内存中的所有blob.

有没有办法在服务器端使用PHP解决这个问题?谢谢你的回复.

Dea*_*her 12

plupload是一个javascript/php库,它很容易使用并允许分块.

它使用HTML5.


Zak*_*Zak -1

您绝对可以编写一个 Web 应用程序来接受数据块(甚至通过 POST),然后将该数据块附加到文件中。在我看来,您需要某种客户端应用程序来获取文件并将其分解为块,然后一次将其发送到您的网络服务。然而,创建 sftp 目录似乎要容易得多,并让客户端使用一些预先存在的客户端应用程序来 sftp 上传文件。

  • 您可能不想在每个块进入时将其附加到目标文件。块可能会乱序。我们使用的解决方案是用数字 ID 保存每个块,然后在所有块上传后将它们组合起来。 (2认同)