我有一个网站,管理员必须上传高清质量的电影。电影的大小几乎是2GB +
PHP或apache是否支持2GB或更高的文件上传?
最好的方法是什么?我应该使用ajax上传,swf上传(uploadify)还是普通表单提交上传?
我正在使用PHP 5.4
答案 0 :(得分:1)
两个PHP配置选项控制最大上传大小:upload_max_filesize
和post_max_size
。对于10兆字节的文件大小,两者都可以设置为“10M”。
但是,您还需要考虑完成上传所需的时间。 PHP脚本通常会在30秒后超时,但10MB文件在健康的宽带连接上上传至少需要3分钟(请记住,上传速度通常比下载速度慢5倍)。此外,操纵或保存上载的图像也可能导致脚本超时。因此,我们需要将PHP的max_input_time
和max_execution_time
设置为300(以秒为单位指定5分钟)。
可以在服务器的php.ini配置文件中设置这些选项,以便它们适用于所有应用程序。或者,如果您使用的是Apache,则可以在应用程序的.htaccess文件中配置设置:
php_value upload_max_filesize 10M
php_value post_max_size 10M
php_value max_input_time 300
php_value max_execution_time 300
最后,您可以在PHP应用程序中定义约束:
ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
PHP还提供set_time_limit()
功能,因此您无需直接设置max_execution_time
。
在PHP代码中设置选项可能更实用,因为当您的应用程序需要大量上传时,您可以延长执行时间并增加文件大小。其他形式将恢复为默认的30秒超时和2MB限制。
答案 1 :(得分:0)
你可能需要增加Apache的conf中的最大文件上传大小,以及php.ini文件中的post_max_size和upload_max_size指令。
答案 2 :(得分:0)
如果文件> = 2GB,您可能会达到某些浏览器限制。
另外,上传2GB可能需要一些时间(可能超过网络服务器的超时)。
如果您的连接中断,则必须重新上载整个文件。