大文件上传

时间:2009-08-27 19:08:54

标签: php file upload

我正在开发一个允许在Web服务器上上传和存储大文件的应用程序。目前我正在使用PHP通过http处理POSTed文件。我的php.ini设置为:

upload_max_filesize = 100M
post_max_size = 100M
memory_limit = 128M
max_input_time = 6000
max_execution_time = 6000

似乎没有为LimitRequestBody设置任何apache指令。我使用APC来跟踪文件上传进度。由于某种原因,文件上传始终在50M时完全停止。

我知道http不是文件上传最有效的解决方案,但这个应用程序需要用户友好,我知道ftp存在防火墙问题。

我想知道是否有人可以给我一些关于什么是在50M时停止下载的建议?它必须是某种配置设置。

此外,还有其他方法我应该考虑使用javascript / PHP和http进行文件上传。我已经研究过java applet并使用flash。可能会使用swfuploader,但如果它的服务器配置导致我的上传通过http失败,我真的不知道java applet或flash uploader是如何解决的。

我应该注意到,我希望能够提出一个解决方案,允许我在某个时候上传非常大的1 GB文件。

我使用非常简单的PHP来接收文件

$uploaddir = '/'.$_POST['upload_directory'].'/';
$uploadfile = $uploaddir . basename($_FILES['file']['name']);

if (is_uploaded_file($_FILES['file']['tmp_name'])) {
    if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {  some success code; }

显然还有更多的东西,但这是我如何处理上传的要点。

2 个答案:

答案 0 :(得分:4)

经过几个小时的敲击我已经解决了问题。我正在使用Extjs作为前端组件。我正在使用的上传小部件中有一个硬编码设置,它将POST请求的MAX_ UPLOAD _FILESIZE属性设置为50M,覆盖了我将其设置为其他位置的值。它现在按预期工作。感谢您的评论。

答案 1 :(得分:2)

在vhost中设置LimitRequestBody指令。

http://www.cyberciti.biz/faq/apache-limiting-upload-size/