28

我用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);
}

我需要帮助,我想知道是否有什么做错了..

4

3 回答 3

24

您认为增加上传大小限制是否会解决问题?如果上传 2GB 文件,那会发生什么?您是否考虑过此类脚本的内存使用情况?

相反,您需要的是分块上传,请参见此处:在服务器端处理 plupload 的分块上传 和此处:文件上传;如何利用“分块”?

于 2013-04-19T10:49:18.377 回答
12

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

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

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

然后,您将需要重新启动 apache。

注意:
话虽如此,上传这样的大文件并不是很可靠。可能会发生错误。您可能想要拆分文件,并包含一些附加数据以进行错误更正。一种方法是使用标准恢复文件。然后,您可以在类 unix 系统上使用par命令行实用程序在上传后检查文件。

于 2013-04-19T10:46:11.880 回答
0

我假设您的意思是您通过 HTTP 传输文件。虽然不如 FTP 糟糕,但如果您能找到另一个解决问题的方法,这不是一个好主意。HTTP(以及因此的组件程序)针对在 Internet 上传输相对较小的文件进行了优化。

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

于 2013-04-19T10:52:47.253 回答