如何在PHP中上传500MB以上的大文件

时间:2013-04-19 10:43:47

标签: php

我用PHP制作了一个上传页面,但我不知道为什么页面不会上传大于500MB的文件,这是我第一次尝试上传大的东西,我改变了PHP.INI中的所有配置( post_max_size = 700M,upload_max_filesize = 600M,max_execution_time = 300)。上传代码如下:

if(isset($_FILES['upload']) && !empty($_FILES['upload']['name'])){
 move_uploaded_file($_FILES['upload']['tmp_name'], $this->filePath.$this->fileName);
}

我需要帮助,我想知道是否有些事情做得不对。

3 个答案:

答案 0 :(得分:20)

您认为增加上传大小限制是否可以解决问题?如果上传2GB文件怎么办呢?你是否考虑过这种脚本的内存使用情况?

相反,您需要的是分块上传,请参阅此处:Handling plupload's chunked uploads on the server-side 在这里:File uploads; How to utilize "chunking"?

答案 1 :(得分:10)

通过配置,PHP只允许上传一定大小的文件。网上有很多文章解释了如何修改这个限制。以下是其中一些:

例如,您可以编辑php.ini文件并设置:

memory_limit = 32M
upload_max_filesize = 24M
post_max_size = 32M

然后您需要重新启动apache。

注意:
话虽这么说,上传这样的大文件不是很可靠。可能会发生错误。您可能希望拆分文件,并包含一些其他数据以进行错误更正。一种方法是使用par recovery files。然后,您可以在类似unix的系统上使用par command line utility上传后检查文件。

答案 2 :(得分:0)

我认为你的意思是你通过HTTP传输文件。 虽然没有FTP那么糟糕,但如果不是一个好主意 你可以找到另一个解决问题的方法。 HTTP(以及组件程序)在围绕互联网传输相对较小的文件时进行了优化。

虽然协议支持服务器到客户端范围请求, 它不允许反向操作。即使两端的软件都不受卷的影响,您推送的数据也就越多  您可能失去连接的间隔越大。 但最大的问题是最后一句中的警告。