この記事では主に thinkphp にある複数画像の Ajax アップロード画像を紹介します。ある参考値があります。今、みんなに共有しています。困っている友達は参考にしてください。
プロジェクトに出会ったとき, 比較があります 面倒な機能を備えた ajax アップロードが 6 つあります 基本的に、それぞれのアップロードのロジックが異なります
thinkphp のビュー ページを記録します:
id はこの要素を見つけるのに便利です名前を追加する必要があります [ ]
<div class="btns"> <a href="javascript:;" class="a-upload"> <input type="file" id="fileaq" name="fileaq[]" data-filesType="words" class="uploadInput" multiple="multiple" /> <i class="iconfont icon-shangchuan"></i>上传附件 </a> <a href="javascript:void(0)" class="submit" id="aq_sub">发布</a> </div>
[公開] をクリックして最初に決定し、必要なパラメータを doUploadFiles 関数に渡します
//发布案情 $('#aq_sub').click(function() { var guanxi = 'many_one'; var type_file = 'file'; var type_name = 'fileaq'; var anqing = $('#anqing').val(); if ($.trim(anqing).length == 0) { layer.alert('请输入内容!\n'); $('#anqing').focus(); return false; } else { var cate_id = 3; doUploadFiles(cate_id, type_file, type_name, guanxi, anqing); } })
パラメータの説明
cate_id : 複数のアップロードの識別 ID
type_file: 画像かファイルのアップロードかを判断します (nofiley: 一部のファイルはアップロードする必要がありません)
type_name:アップロードされたファイルの ID
#guanxi: リレーションシップ プロジェクトの要件 パラメーターは、many_one、many_many、one_one (ユーザーごとに 1 つのデータ、ユーザーごとに複数のデータ、ユーザーごとに 1 つのデータ)
# に分割されます。 ##content: contentfunction doUploadFiles(cate_id, type_file, type_name, guanxi, content) { var guanxi = arguments[3] ? arguments[3] : 'many_one'; //设置关系 var formData = new FormData(); var fangchan_id = $('#fangchan_id').val(); formData.append("fangchan_id", fangchan_id); formData.append("cate_id", cate_id); formData.append("guanxi", guanxi); formData.append("content", content); if(type_file !='nofile'){ formData.append("type_file", type_file); formData.append("file_length", $("#"+type_name)[0].files.length); for(var i=0; i<$("#"+type_name)[0].files.length;i++){ formData.append('file[]',$("#"+type_name)[0].files[i]); } } $.ajax({ url: '/Property/jindiaoHandle', type: 'POST', data: formData, dataType: "json", async: false, cache: false, contentType: false, processData: false, success: function(data) { console.log('上传:',data) if (data.status == 200) { layer.msg(data.msg, { icon: 1 }); window.location.reload(); } else { layer.msg(data.msg, { icon: 1 }); return false; } } }); }
/** * 提交房源尽调 */ public function jindiaoHandle() { $user_id = session('user_id'); $fangchan_id = I('post.fangchan_id'); $cate_id = I('post.cate_id'); $cate_arr = array('6','7','8'); $content = I('post.content'); $type_file = I('post.type_file'); $file_length = I('post.file_length'); //判断是否上传文件 //many_one 多个用户存在一条 many_many 多个用户存在多条 one_one 只能催在一条数据 $guanxi = I('post.guanxi'); $guanxi?$guanxi:'many_one'; $content?$content:'0'; if(empty($user_id)){ $ret = ['status' => '1001', 'msg' => '请先登录!'.$user_id, 'data' => '']; $this->ajaxReturn($ret, 'json'); }else{ $level = M('users')->where(['user_id' => $user_id])->getField('level'); //判断是不是法拍经理 if ($level != 2) { $ret = ['status' => '1002', 'msg' => '您没有权限填写!', 'data' => '']; $this->ajaxReturn($ret); } } if(empty($fangchan_id)) { $ret = ['status' => '1003', 'msg' => '找不到此房源!', 'data' => '']; $this->ajaxReturn($ret); } if(empty($cate_id)) { $ret = ['status' => '1004', 'msg' => '找不到此尽调类型!', 'data' => '']; $this->ajaxReturn($ret); } if(empty($content)) { $ret = ['status' => '1005', 'msg' => '内容不能为空!', 'data' => '']; $this->ajaxReturn($ret); } $fc_user_id = M('fangchan')->where(['fangchan_id' => $fangchan_id])->getField('user_id'); //判断是不是该房产的法拍经理 if ($fc_user_id == $user_id) { $data = [ 'fangchan_id' => $fangchan_id, 'user_id' => $user_id, 'cate_id' => $cate_id, 'content' => $content, 'res_num' => $file_length, 'add_time' => time(), 'is_user' => 1, 'is_show' => '1', ]; } else { if(!in_array($cate_id,$cate_arr)) { $fc_add_time = M('fangchan')->where(['fangchan_id' => $fangchan_id])->getField('add_time'); //获取添加时间 if ((time() - $fc_add_time) < (12 * 60 * 60)) { $arr = ['status' => '1006', 'msg' => '请于24小时候后来发布!', 'data' => '']; $this->ajaxReturn($arr, 'json'); } } $data = [ 'fangchan_id' => $fangchan_id, 'user_id' => $user_id, 'cate_id' => $cate_id, 'content' => $content, 'res_num' => $file_length, 'add_time' => time(), 'is_user' => 0, 'is_show' => '1', ]; } if($guanxi=='many_one') { $fc_jindiao_data = M('fangchan_jindiao') ->where(['fangchan_id'=>$fangchan_id,'user_id'=>$user_id,'cate_id'=>$cate_id]) ->getField('jindiao_id'); //判断房产尽调是修改还是添加 if($fc_jindiao_data){ $res_edit = M('fangchan_jindiao')->where('jindiao_id='.$fc_jindiao_data)->save($data); }else{ $res_add = M('fangchan_jindiao')->add($data); } }elseif($guanxi=='one_one') { $fc_jindiao_data = M('fangchan_jindiao') ->where(['fangchan_id'=>$fangchan_id,'cate_id'=>$cate_id]) ->getField('jindiao_id'); //判断房产尽调是修改还是添加 if($fc_jindiao_data){ $res_edit = M('fangchan_jindiao')->where('jindiao_id='.$fc_jindiao_data)->save($data); }else{ $res_add = M('fangchan_jindiao')->add($data); } }elseif($guanxi=='many_many') { $res_add = M('fangchan_jindiao')->add($data); } //判断是否有文件 if(!empty($file_length) || $file_length!=0) { $result = self::uploadFile($type_file); if($result['status'] == -1){ exit(json_encode(array("status"=>-1,"msg"=>$result['msg'],'result'=>''))); } $add_time = time(); if(!empty($res_edit)) { $where=array('user_id' => $user_id,'fangchan_id' => $fangchan_id,'cate_id'=> $cate_id); $r_info = M('fangchan_jindiao')->where($where) ->getField('jindiao_id'); if($r_info) { foreach ($result['result'] as $v) { if($type_file=='file') { $data=array('user_id' => $user_id,'fangchan_id' => $fangchan_id,'cate_id'=> $cate_id,'add_time'=> $add_time,'jindiao_id'=> $r_info,'file'=>$v); $ziyuan_info = M("fangchan_jdresources")->data($data)->add(); }elseif($type_file=='image') { $data=array('user_id' => $user_id,'fangchan_id' => $fangchan_id,'cate_id'=> $cate_id,'add_time'=> $add_time,'jindiao_id'=> $r_info,'images'=>$v); $ziyuan_info = M("fangchan_jdresources")->data($data)->add(); } } if($ziyuan_info) { $ret =[ 'status'=>200, 'msg'=>'上传成功', 'data'=> $data ]; }else{ $ret =[ 'status'=>1009, 'msg'=>'上传资源失败', 'data'=> '' ]; } }else{ $ret =[ 'status'=>1008, 'msg'=>'上传资源失败', 'data'=> '' ]; } }elseif(!empty($res_add)) { foreach ($result['result'] as $v) { if($type_file=='file') { $data=array('user_id' => $user_id,'fangchan_id' => $fangchan_id,'cate_id'=> $cate_id,'add_time'=> $add_time,'jindiao_id'=> $res_add,'file'=>$v); $ziyuan_info = M("fangchan_jdresources")->data($data)->add(); }elseif($type_file=='image') { $data=array('user_id' => $user_id,'fangchan_id' => $fangchan_id,'cate_id'=> $cate_id,'add_time'=> $add_time,'jindiao_id'=> $res_add,'images'=>$v); $ziyuan_info = M("fangchan_jdresources")->data($data)->add(); } } if($ziyuan_info) { $ret =[ 'status'=>200, 'msg'=>'上传成功', 'data'=> $data ]; }else{ $ret =[ 'status'=>1010, 'msg'=>'上传资源失败', 'data'=> '' ]; } }else{ $ret =[ 'status'=>1011, 'msg'=>'上传资源失败', 'data'=> '' ]; } }elseif(empty($res_add) && empty($res_edit)){ $ret =[ 'status'=>1007, 'msg'=>'上传失败', 'data'=> '' ]; }else{ $ret =[ 'status'=>200, 'msg'=>'上传成功', 'data'=> '' ]; } $this->ajaxReturn($ret); } /* *多图上传 */ public function uploadFile($type='file'){ if($type=='file') { $type_info = array('doc', 'docx', 'xls', 'xlsx','zip','rar'); $type_path = '/Public/upload/jidiao/files/'; }elseif($type=='image'){ $type_info = array('jpg', 'gif', 'png', 'jpeg'); $type_path = '/Public/upload/jidiao/images/'; } $upload = new \Think\Upload();// 实例化上传类 $upload->maxSize = 1 * 1024 * 1024;// 设置附件上传大小 $upload->exts = $type_info;// 设置附件上传类型 $upload->rootPath = '.'.$type_path; // 设置附件上传根目录 $upload->savePath = ''; // 设置附件上传(子)目录 $upload->subName = array('date','Y/m-d'); //上传文件 $info = $upload->upload(); $picurl = array(); if(!$info) {// 上传错误提示错误信息 return array('status'=>-1,'msg'=>$upload->getError(),'result'=>''); }else{// 上传成功 获取上传文件信息 foreach($info as $file){ $picurl[] = $type_path.$file['savepath'].$file['savename']; } return array("status"=>1,"msg"=>'上传成功','result'=>$picurl); } }
以上がthinkphp での複数画像の Ajax アップロード画像の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。