大文件上传

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小程序和使用Flash。可能会使用swfuploader,但如果是服务器配置导致我的上传失败,我不太清楚Java小程序或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; }

很明显,这其中还有更多细节,但大致上就是我处理上传的方式。

你是如何上传文件的?上传后你会对它们进行什么操作? - Daniel Bingham
简单的PHP代码用于判断文件是否已上传,以及将文件移动到指定的目录中。同时,可以使用 $_FILES 变量来获取上传的文件信息。 - wallacer
2个回答

4

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


2

本文介绍如何设置LimitRequestBody来限制上传文件的大小。如果我没有设置LimitRequestBody,那么上传大小不是已经无限制了吗? - wallacer
1
http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestbody 表示:“如果客户端请求超过了限制,服务器将返回错误响应而不是处理请求”。如果您在浏览器中没有收到错误响应,则不是这个问题... - VolkerK
嗯,我没有收到错误信息,所以我知道这不是问题所在。虽然我没有足够的“声望”来对回答进行投票,但这个回答根本没有什么帮助。 - wallacer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接