在文件上传中,我们经常会要求显示用户上传文件大小,超过上传限制的文件就会不允许用户上传。虽然我们可以用程序去判断上传文件是否超过限制,但是其实我们的PHP程序是无法判断用户本地文件大小的。所以等到我们的PHP来判断文件大小的时候,那个文件其实已经上传到服务器了。这时候再判断超过限制了,不允许上传。可就有点马后炮了。
  那么有没有办法在文件上传之前就判断将要上传的文件是否超过限制,不允许用户上传呢?答案是肯定的,只是经常被人们遗忘而已。这个办法不是在程序上解决的。而是使用html的标签解决的。

<input type="hidden" name="MAX_FILE_SIZE" value="30000" />

将这段代码一定要放到文件提交框之前,就可以了。给个完整的例子如下:
<form enctype="multipart/form-data" action="__URL__" method="POST">
   <!-- MAX_FILE_SIZE must precede the file input field -->
   <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
   <!-- Name of input element determines name in $_FILES array -->
   Send this file: <input name="userfile" type="file" />
   <input type="submit" value="Send File" />
</form>


使用了这个隐藏域之后,可以在用户提交之后,文件上传之前就进行限制判断,超过限制,马上做出$_FILES['error'] =2的错误。这样就可以避免等一个大文件传上服务器以后才发现超过限制了。这样既浪费了用户的表情,也浪费了我们的贷款。所以在这里,我ArthurXF强烈建议大家在做文件上传的时候加上上面的限制,以提高用户的体验!
PHP | 评论(1) | 引用(0) | 阅读(16268)
Cissy Email Homepage
2009/03/26 23:29
楼主好。
MAX_FILE_SIZE这个特性是php提出的,其本意是当用户上传超过该大小时让浏览器端直接作出反应。但这项提议不被两大主流浏览器ie和firefox支持。在这两个浏览器下测试就会发现,还是要等到上传了MAX_FILE_SIZE的大小(甚至更多,因为php的缓冲大小是5k,就是说可能最多会多传5k)才能知道超过了。
所以并不是“被人遗忘的”,也提高不了用户的体验。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]