验证是一个大问题,好像我在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错误。但他们确实有一个后备服务器端验证需要几秒钟,不顺利,但它确实显示一个小错误。
所以只需要在不上传的情况下找出服务器端部件,在我看来只有一种方法可以做到:
谢谢和问候。请帮忙。 :)
答案 0 :(得分:1)
这是一个使用flash + javascript(MooTools)进行文件上传的插件。这个插件的好处是支持它,你可以Github它。它可以限制最大尺寸等,并在上传前验证文件信息。此外,还有使用PHP的后端示例,说明文件在上传后的处理方式。
功能
这是与MooTools相同的jQuery插件:
答案 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_SIZE
,upload_max_filesize
或post_max_size
(来自php.ini)
有关更多功能,请尝试http://valums.com/ajax-upload/