js:
var imgarr = []; $('.file').on('change',function(e){ var inp = $(this); var up = $(e.currentTarget).parents('li'); $("#mainForm").ajaxSubmit({ url : "<{:U('Release/ajaxUpload')}>", // 请求的url type : "post", // 请求方式 dataType : "json", // 响应的数据类型 async :true, // 异步 success: function (data1) { // alert(data1); // $('.uploadImg').empty(); var ele = "\ <li class='img'>\ <img src='"+data1+"'>\ <i class='iconfont icon-delete2' onclick='remove(this)'></i>\ </li>"; //$('.imgBox').before(ele); up.before(ele) $('#mainForm').find('input[name=image]').val(data1); imgarr.push(data1); }, error : function(){ alert("数据加载失败!"); } }); });
<ul class="imgBox" id="1"> <li class="up"> <span><i class="iconfont icon-plus-bold"></i></span> <input type="file" name="img" class="file"> </li> </ul>
php代码:
/** * 上传图片 */ public function ajaxUpload() { $pic = $_FILES['img']; $path_pic = './Public/static/images'; if (!empty($pic['name'])) { $pic_res = uploadFile($pic, $path_pic); if ($pic_res['status'] == 1) { $this->ajaxReturn(trim($pic_res['dest'], '.')); } else { $this->ajaxReturn(0); } } else { $this->ajaxReturn(0); } }
uploadFile函数:
//文件上传 function uploadFile($fileInfo, $path = './public/static/images/', $flag = true, $allowExt = array('jpeg', 'jpg', 'png', 'gif', 'mp3', 'wav', 'wma', ''), $maxSize = 524288000) { //判断错误号 if ($fileInfo['error'] == 0) { //检测上传文件的大小 if ($fileInfo['size'] > $maxSize) { $res['mes'] = $fileInfo['name'] . '上传文件过大'; } $ext = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION)); //检测上传文件的文件类型 if (!in_array($ext, $allowExt)) { $res['mes'] = $fileInfo['name'] . '非法文件类型'; } //检测是否是真实的图片类型 if ($flag) { if (!getimagesize($fileInfo['tmp_name'])) { $res['mes'] = $fileInfo['name'] . '不是真实图片类型'; } } // 检测文件是否是通过HTTP POST上传上来的 if (!is_uploaded_file($fileInfo['tmp_name'])) { $res['mes'] = $fileInfo['name'] . '文件不是通过HTTP POST方式上传上来的'; } if ($res) return $res; //如果要不显示错误信息的话,用if( @$res ) return $res; //$path='./uploads'; //如果没有这个文件夹,那么就创建一 if (!file_exists($path)) { mkdir($path, 0777, true); chmod($path, 0777); } //新文件名唯一 $uniName = md5(uniqid(microtime(true), true)); $destination = $path . '/' . $uniName . '.' . $ext; //@符号是为了不让客户看到错误信,也可以删除 if (!@move_uploaded_file($fileInfo['tmp_name'], $destination)) { $res['mes'] = $fileInfo['name'] . '文件移动失败'; } $res['mes'] = $fileInfo['name'] . '上传成功'; $res['status'] = 1; $res['dest'] = $destination; return $res; } else { //匹配错误信息 //注意!错误信息没有5 switch ($fileInfo['error']) { case 1: $res['mes'] = '上传文件超过了PHP配置文件中upload_max_filesize选项的值'; break; case 2: $res['mes'] = '超过了HTML表单MAX_FILE_SIZE限制的大小'; break; case 3: $res['mes'] = '文件部分被上传'; break; case 4: $res['mes'] = '没有选择上传文件'; break; case 6: $res['mes'] = '没有找到临时目录'; break; case 7: $res['mes'] = '文件写入失败'; break; case 8: $res['mes'] = '上传的文件被PHP扩展程序中断'; break; } $res['status'] = -1; return $res; }js需要引入jquery-form.js
文章来源: php+ajax上传图片