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

2022-08-30 11:33:18

我有一个 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上传或时间并不是真正大文件(约 1GB)的解决方案,因为浏览器可能会超时并考虑存储在内存中的所有 blob。max_execution

有没有办法在服务器端使用PHP来解决这个问题?感谢您的回复。


答案 1

plupload是一个javascript / php库,它非常易于使用并允许分块。

不过它使用HTML5。


答案 2

看看 tus 协议,它是一种基于 HTTP 的协议,用于恢复文件上传,因此您可以从中断的地方继续,而无需在发生任何中断时再次重新上传整个数据。该协议也已于2017年5月由vimeo采用

您可以在此处找到不同语言的协议的各种实现。在你的情况下,你可以使用它的javascript客户端uppy,并在服务器中使用golang或基于php的服务器实现。


推荐