我用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);
}
我需要帮助,我想知道是否有些事情做得不对。
答案 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(以及组件程序)在围绕互联网传输相对较小的文件时进行了优化。
虽然协议支持服务器到客户端范围请求, 它不允许反向操作。即使两端的软件都不受卷的影响,您推送的数据也就越多 您可能失去连接的间隔越大。 但最大的问题是最后一句中的警告。