使用ThinkPHP上传类处理KindEditor上传的图片

作者:袖梨 2022-06-25

KindEditor作为一款可视化的HTML编辑器用起来确实比较方便,其本身也自带了图片上传的处理
这里修改为TP上传处理图片,是为了保证上传图片的方便(目录独立于编辑器,便于增加水印等处理)

第一步:在模板html页面引入如下文件:

 代码如下 复制代码





路径根据自己的项目不同,正确引入即可,uploadJson : "/Home/Common/upload",
uploadJson后面的就是编辑器上传图片的处理地址,可以根据自己的自行配置
这里交由Home分组的Common控制器的upload方法处理图片上传

第二步:自定义上传处理函数

 代码如下 复制代码


function upload(){ 
 header("Content-Type:text/html;charset=utf-8");
    import('ORG.Net.UploadFile');

    $upload = new UploadFile();
 $upload->maxSize  = 3145728;
 $upload->allowExts  = array('jpg', 'gif', 'png', 'jpeg');
 
 $upload->autoSub=true;
 $upload->subType='date';
 $upload->dateFormat='Ym'; 
 $upload->savePath =  './upload/article/';
 
 if(!$upload->upload()){
  $error['error']=1;
  $error['message']=$upload->getErrorMsg();
  exit(json_encode($error));
 }
 
 $info=$upload->getUploadFileInfo();
 
 /*图片水印处理
 import('ORG.Util.Image');
 $image = new Image();
 $image->water($upload->savePath.$info[0]['savename'],'./data/water.png');*/
 
 $data=array(
  'url'=>str_replace('./','/',$upload->savePath).$info[0]['savename'],
  'error'=>0
 );
 
 exit(json_encode($data));  
}

这里使用ThinkPHP的上传类处理图片上传,也可以自己写,唯一需要注意的就是返回的格式

查看了下官方的文档:

 代码如下 复制代码
上传正确返回这种JSON串
{
    "error" : 0,
    "url" : "http://www.example.com/path/to/file.ext"
}
上传失败返回这种JSON串
{
    "error" : 1,
    "message" : "错误信息"
}

特别需要注意的一点就是返回的error一定要用整数1或是0,别用字符串'1'或'0'
原因是plugins/image/image.js的结果判断是 恒等于 ===
(当初自己就是因为PHP端返回的是字符串形式的'0'不等于整数的0导致上传之后总是弹窗报错)

相关文章

精彩推荐