我想用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检查输入文件的正确格式),或者在服务器端进行检查,如果格式错误,则从服务器输出错误。
===编辑===
下面是一个如何使用文件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元素的内容。并检查服务器的响应。