文件上载大小验证

时间:2011-02-09 16:36:31

标签: php javascript validation upload size

验证是一个大问题,好像我在php中验证它具有我需要使其工作的所有功能..但它首先在临时位置上传文件,然后检查,这很糟糕。如果有人上传了一个100mb的文件,他必须等待时间只是为了得到没有错误,但只是一些内部的PHP搞砸了挂起页面。

单向:JS

//file is id of input file
alert(document.getElementById('file').files[0].fileSize);

这适用于firefox,safari,chrome我猜也是,不是:在歌剧中,非常确定IE也可以通过ActiveX文件大小来处理IE但是Opera仍然卡住了。所以相当无法使用,无论如何都要绕过它?

第二:我在想,我可以通过设置php.ini中的最大大小或类似的东西来提供php自定义警报或其他东西,这可以轻松解决问题。这就是我要找的东西。

另一个更新:

我一直在玩弄了解才知道发生了什么,我意识到他们甚至使用javascript文件大小检查:P现在用firefox工作得很好,其他像我说的,甚至IE,因为它有一个后退ActiveX方法,但Opera是受害者:P他们不能在这种情况下给出一个奇特的javascript错误。但他们确实有一个后备服务器端验证需要几秒钟,不顺利,但它确实显示一个小错误。

所以只需要在不上传的情况下找出服务器端部件,在我看来只有一种方法可以做到:

  1. 一些 内部php最大大小增加 我可以自定义或运行的错误 一些脚本,以找出是否最大 已达到大小或找到POST 超过或类似的东西。 // 没有想到这个。希望有些 服务器的家伙可以帮忙:)我想这个 什么会解决它,如果有人 php服务器大师在这里。
  2. 谢谢和问候。请帮忙。 :)

3 个答案:

答案 0 :(得分:1)

这是一个使用flash + javascript(MooTools)进行文件上传的插件。这个插件的好处是支持它,你可以Github它。它可以限制最大尺寸等,并在上传前验证文件信息。此外,还有使用PHP的后端示例,说明文件在上传后的处理方式。

Fancyupload

功能

  • 选择并上传多个文件
  • 按选择
  • 中的类型过滤文件
  • 对话框很多可能发生的事件 添加自己的行为
  • 之前显示和过滤有用的文件信息 上传开始
  • 按文件数量,类型或尺寸限制上传
  • 平台和服务器无关,只需要Flash9 +(> 95%渗透率),适用于所有安装了它的浏览器

这是与MooTools相同的jQuery插件:

Uploadify

答案 1 :(得分:0)

您可以设置PHP,Javascript和amp;中允许的最大大小Apache的。

使用Javascript是最友好的用户,因为它会立即提醒用户。

使用旁边的PHP有一个简单的方法可以在上传后进行检查。

最后使用Apache,因为它的级别相当低,而且我认为检查过大的文件(给用户提供一个很好的警报)这种方式更加困难。

答案 2 :(得分:0)

您可以使用服务器端解决方案。

尝试上传文件后使用$_SERVER['CONTENT_LENGTH']。即使上传失败,此变量也会返回上传文件的大小。

if(isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH']>2097152)
$error = 'Upload FAILED, file is too large !';

此方法适用于上传文件时的所有错误情况,即使filesize大于MAX_FILE_SIZEupload_max_filesizepost_max_size(来自php.ini)

有关更多功能,请尝试http://valums.com/ajax-upload/