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() ]); } }