在jQuery中设置$_file变量


Set a $_file variable in jQuery

我想用ajax验证图像是否具有有效的格式。但是我有一个问题,如何在jQuery中设置$_file变量?

所以我想"翻译"这个php代码:

        $Avatar = $_FILES['Avatar']['name'];
        $AvatarTmp = $_FILES['Avatar']['tmp_name'];

到jquery。

这里是将被调用的Php脚本($.post)的(重要部分):

            if(!empty($AvatarTmp))
        {
            $AvatarSize = getimagesize($AvatarTmp);
            if($AvatarSize['mime'] =='image/jpeg')
            {
                $AvatarSrc = imagecreatefromjpeg($AvatarTmp);                       
            }else
            if($AvatarSize['mime'] =='image/png')
            {   
                $AvatarSrc = imagecreatefrompng($AvatarTmp);                        
            }else
            if($AvatarSize['mime'] =='image/gif')
            {                       
                $AvatarSrc = imagecreatefromgif($AvatarTmp);
            }else
            {
                $Errors[] = "Error006";
                $AvatarSrc = false;
            }
        }

附言:如果需要更多的代码或任何东西,问,我会立即添加。

不幸的是,jQuery(JavaScript)与PHP完全不同,因此它没有任何类型的File对象。正如@VIPINJAIN所提到的,即将推出HTML5文件API,但它还处于起步阶段。

您最好通过文件扩展名进行检查(请参阅使用jquery检查输入文件的正确格式),或者在服务器端进行检查,如果格式错误,则从服务器输出错误。

===编辑===

下面是一个如何使用文件API的例子,包括如何使用它检查文件类型,但请记住,这只适用于有限数量的浏览器:

http://robertnyman.com/2010/12/16/utilizing-the-html5-file-api-to-choose-upload-preview-and-see-progress-for-multiple-files/#highlighter_81142

否,除非您在mozilla firefox中使用html5文件api,否则您不能在ajax请求中发送文件。

或者你也可以这样做,

将带有文件输入的表单提交到iframe,并在加载iframe时使用jquery获取iframe的body元素的内容。并检查服务器的响应。