Cap*_*ffe 10 php file-upload php-5.3
我应该如何处理超出post_max_size理智的http上传?
在我的配置post_max_size中比upload_max_filesize
我遇到的问题大几MB :
如果用户上传的文件超过post_max_size
部分问题是接收脚本根据POST的内容采取不同的操作.
我也有机会获得_SERVER变量,并能得到线索,发生了什么事,即CONTENT_TYPE,CONTENT_LENGTH和REQUEST_METHOD.然而,根据这些内容进行猜测似乎很成问题.
发现MEMORY_LIMIT(设置为相关大小的10倍)和Apaches LimitRequestBody(设置为无限制)没有错.
就目前而言,我甚至很难向用户提供任何有意义的消息.
有没有办法保留一些表格数据,以获得更好的线索,哪些出了问题?我非常不愿意离开php.
Mat*_*hew 10
对于不需要服务器端更改的简单修复,我会在上传之前使用HTML5 File API检查文件的大小.如果超出已知限制,则取消上传.我相信这样的事情会起作用:
function on_submit()
{
if (document.getElementById("upload").files[0].size > 666)
{
alert("File is too big.");
return false;
}
return true;
}
<form onsubmit="return on_submit()">
<input id="upload" type="file" />
</form>
Run Code Online (Sandbox Code Playgroud)
显然它只是一个例子的骨架,并不是每个浏览器都支持这个.但是使用它并没有什么坏处,因为它可以以这样一种方式实现,即它可以优雅地降级为旧浏览器.
当然,这并不能解决问题,但它至少可以让您的用户满意,并且只需要很少的工作量.(他们甚至不必等待上传失败.)
-
另外,检查$_SERVER['CONTENT_LENGTH']帖子和文件数据的大小可能有助于检测是否出现故障.我觉得这时候有这将是非零的错误,同时$_POST和$_FILES两个都会是空的.