2009-08-27 102 views
5

我正在研究允许在Web服务器上上传和存储大文件的应用程序。目前我使用PHP通过http处理POST文件。我有我的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 applets并使用flash。可能会使用swfuploader,但如果它的服务器配置导致我的上传失败通过http,我真的不知道java applet或flash上​​传器如何解决这个问题。

我要指出,我希望能拿出一个解决方案,让我在某一点上是非常大的文件上传高达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; } 

有明显多一点给它比,但是这是我如何处理上传的要点。

+0

你是如何上传文件的,你在上传文件后做了些什么? – 2009-08-27 19:12:04

+0

简单的php is_uploaded_file()和move_uploaded_file()以命令和拉动文件出来的$ _FILES – wallacer 2009-08-27 19:23:55

回答

4

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

2

设置LimitRequestBody指令在你的虚拟主机。

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

+0

这篇文章是关于如何设置LimitRequestBody限制上传大小。如果我没有设置LimitRequestBody,那它是不是已经没有限制了? – wallacer 2009-08-27 19:25:17

+1

http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestbody说:“如果客户端请求超过该限制,服务器将返回错误响应而不是服务请求。”如果你没有在浏览器中得到错误响应,这不是问题... – VolkerK 2009-08-27 20:14:16

+0

雅,我没有得到一个错误,所以我知道这不是问题。我没有足够的“声誉”来减少答案,但这个答案根本没有帮助 – wallacer 2009-08-27 20:44:18