tp5实现异步图片上传 
 
使用插件 bootstrp的一个fileinput插件来通过ajax的方式实现图片的上传 
https://segmentfault.com/a/1190000018477200 
使用步骤 下载之后  解压放到tp5项目public目录 
引入依赖文件 1 2 3 4 <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css"  rel="stylesheet" >  <link rel="stylesheet"  href="__STATIC__/bootstrap-fileinput-master/css/fileinput.css" >  <script src="__STATIC__/bootstrap-fileinput-master/js/fileinput.js" ></script>  <script src="__STATIC__/bootstrap-fileinput-master/js/locales/zh.js" ></script> 
 
页面加入控件 隐藏域用来保存上传成功后的图片地址和缩略图地址  注意给form添加文件上传的属性
1 2 3 4 5 6 7 8 <div class="Operate_cont clearfix">     <label class="form-label">上传图片:</label>     <div class="formControls ">         <input type="file" id="imgUpload" class="file-loading">//不需要添加name属性  插件自动生成         <input type="hidden"  name="image"  value=""  id="image" >         <input type="hidden"  name="image_thumb"  value=""  id="image_thumb" >     </div> </div> 
 
js代码进行配置 1 2 3 4 5 6 7 8 $("#imgUpload" ).fileinput({     language: 'zh' ,     uploadUrl:"{:url('product/uploadImg')}" ,     autoReplace:true ,     maxFileCount:1 ,     allowedFileExtensions: ['jpg' ,'png' ,"gif" ],     browseClass: "btn btn-primary"  }); 
 
监听后台返回的信息 1 2 3 4 5 6 7 8 9 $("#imgUpload" ).on('fileuploaded' , function (event,data)   {     var  path=data.response.path;     var  thumb_path=data.response.thumb;     $("#image" ).val(path);     $("#image_thumb" ).val(thumb_path);     console.log(path);     console.log(thumb_path); }); 
 
后端代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27     public  function  uploadImg ()  {         $file =$this ->request->file('file_data' );         $path=ROOT_PATH . 'public'  . DS . 'uploads' .DS.'product' ;         $thumb_path=ROOT_PATH . 'public'  . DS . 'uploads' .DS.'product' .DS.'thumb' .DS.'thumb_' .$info->getFilename();         $info = $file->move($path);           if ($info){             $path=ROOT_PATH . 'public'  . DS . 'uploads' .DS.'product' .DS.$info->getSaveName();             $image=Image::open($path);              $image->thumb(150 ,150 ,Image::THUMB_SCALING)->save($thumb_path);                          return  json([                 'status' =>1 ,                 'path' =>$info->getSaveName(),                 'thumb' =>'thumb' .DS.'thumb_' .$info->getFilename()             ]);         }else {                          return  json([                 'status' =>0 ,                 'error' =>$file->getError()             ]);         }     }