您的位置:首页 > 编程语言 > PHP开发

ajax上传图片类型,ajax上传文件,判断上传图片类型,php上传图片

2016-11-21 17:09 726 查看
提交表单时候经常会遇到使用ajax,而且表单中会含有图片,文件等等。这时候可以选择使用FormData()来协助完成。

以下是html代码,是一个id=‘submitCompanyInfo’的form,type=‘file’的input,type=‘button’的按钮

<form id="submitCompanyInfo" enctype="multipart/form-data" method="post">
<div class="upload-btn">
<input type="file" id="cardLogo-btn" name="fileLogo" onchange="javascript:setImagePreview('Logo');">
<label for="cardLogo-btn">上传LOGO</label>
</div>
<div class="input-box">
<input type="button" style="border:0" class="btn submitCompanyBtn" value="保存">
</div>
</form>

以下是js代码,FormData()内部是form表单的id。

var formdata = new FormData($('#submitCompanyInfo')[0]);
$.ajax({
    url:'URL地址',
data:formdata,
type:"POST",
dataType:"json",
processData: false,
contentType: false,
success: function (da) {
console.log(da);
}
});

php代码比较简陋,自己写记得要写严密。

//获取ajax传递过来的图片信息,并执行图片判断和上传操作
public function upload(){
if(!empty($_FILES['fileLogo']['name'])){
$res = $this->uploadImages("fileLogo");
if($res['code'] == 1){
$memberInfo[0]['images'] = $res['data'];
}else{
echo json_encode($res);exit;
}
}
}

//上传图片判断上传类型和大小 返回数据格式是json。
function uploadImages($files){
if($_FILES[$files]['error'] !== 0){
switch($_FILES[$files]['error']){
case 1:
case 2:
$message = "上传文件超出限制";
break;
case 3:
$message = "文件上传出错";
break;
case 4:
$message = "上传图片不能为空";
break;
case 6:
$message = "找不到临时文件夹";
break;
case 7:
$message = "文件写入失败";
break;
default:
$message = "未知错误";
break;
}
return array("code" => -1, "message" => $message);exit;
}else if($_FILES[$files]['size'] > 2*1024*1024){ //此处更改图片大小限制
return array("code" => -1, "message" => "上传图片不超过2M");exit;
}else{
$types = ".jpg|.jpeg|.png"; //此处判断图片类型
$info = getimagesize($_FILES[$files]['tmp_name']);
$ext = image_type_to_extension($info['2']);
if(false === strpos($types, $ext)){
return array("code" => -2, "message" => '图片类型错误');exit;
}
//下面是文件命名,和图片存放地址处理
$mdStr = time().rand(100,999);
$md5Path = md5($mdStr);
$secondPath = substr($md5Path,0,2);
$path = '/imagePath/'.$secondPath.'/';
if(!is_dir($path)){
mkdir($path);
}
$filename = $md5Path.'.'.get_extension($_FILES[$files]['name']);
$fullpath = $path.$filename;
if(move_uploaded_file($_FILES[$files]['tmp_name'],$fullpath)){ //移动文件到对应目录下
$imgPath = $path.$filename;
return array("code" => 1, "message" => '成功','data'=>$imgPath);exit;
}else{
return array("code" => -3, "message" => '目录写入失败');exit;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息