HTML上传MAX_FILE_SIZE似乎不起作用

JM *_*ork 36 html php file-upload

我想知道命名的隐藏字段MAX_FILE_SIZE应该如何工作?

<form action="" method="post" enctype="multipart/form-data">
    <!-- in byes must preceed file field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="2097152" /> 
    <input type="file" name="upload" />

    <input type="submit" name="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

我上传了一个4MB +的文件,但我没有收到客户端的警告(我不是在谈论服务器端).该怎么MAX_FILE_SIZE办?

UPDATE

好吧,这样它就可以给PHP强加一个"软"限制.但使用它和检查$_FILES['upload']['size'] < 2000代码之类的东西有什么区别吗?

She*_*hef 42

MAX_FILE_SIZEKB而不是字节.你是对的,它是以字节为单位的.因此,对于4MB的限制convert 4MB in bytes {1024 * (1024 * 4)}尝试:

<input type="hidden" name="MAX_FILE_SIZE" value="4194304" /> 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

更新1

正如其他人所解释的那样,你永远不会得到警告.只是在服务器端强加软限制.

更新2

回答你的子问题.是的,存在差异,您永远不会信任用户输入.如果您想要始终施加限制,您始终必须检查其大小.不要相信什么MAX_FILE_SIZE,因为它可以被用户改变.所以,是的,你应该检查以确保它总是达到或超过你想要的大小.

不同之处在于,如果你强加了MAX_FILE_SIZE2MB并且用户试图上传一个4MB的文件,一旦它们达到大约前2MB的上传量,传输将终止,PHP将停止接受该文件的更多数据.它将报告文件数组上的错误.


Roe*_*umi 40

在开始之前,请允许我强调必须在服务器端检查文件的大小.如果未在服务器端进行检查,恶意用户可以覆盖客户端限制,并将大量文件上载到服务器.不要相信用户.

我使用PHP的MAX_FILE_SIZE玩了一下,它似乎只在文件上传后才起作用,这使得它无关紧要(再次,恶意用户可以很容易地覆盖它).

根据Matthew的帖子,下面的javascript代码(在Firefox和Chrome中测试)将警告用户(好的,无辜的)上传大文件的先验,节省流量和用户的时间:

<form method="post" enctype="multipart/form-data" 
onsubmit="return checkSize(2097152)">    
<input type="file" id="upload" />
<input type="submit" />
Run Code Online (Sandbox Code Playgroud)

<script type="text/javascript">
function checkSize(max_img_size)
{
    var input = document.getElementById("upload");
    // check for browser support (may need to be modified)
    if(input.files && input.files.length == 1)
    {           
        if (input.files[0].size > max_img_size) 
        {
            alert("The file must be less than " + (max_img_size/1024/1024) + "MB");
            return false;
        }
    }

    return true;
}
</script>
Run Code Online (Sandbox Code Playgroud)

  • 请注意IE中不存在文件[0]上的属性"大小"(在IE9上测试) (10认同)

小智 7

对于那些曾经对某些文件很容易上传并且有些文件不容易上瘾的人来说,这可能是一个大小问题.我正在分享这个,因为我坚持使用我的PHP代码而不上传大文件,我一直认为它没有上传任何Excel文件.因此,如果您使用的是PHP并且想要增加文件上载限制,请转到php.ini文件并进行以下修改:

  • upload_max_filesize = 2M

改为

  • upload_max_filesize = 10M

  • post_max_size = 10M

或者所需的尺寸.然后重新启动Apache服务器,上传将开始神奇地工作.希望这会对某人有所帮助.

  • 这与这个问题无关. (4认同)
  • 这对我来说是非常有用的信息,与问题直接相关.我的文件上传似乎不起作用,因为我需要在我的php.ini文件中进行此更改. (2认同)