KindEditor作為一款可視化的HTML編輯器用起來確實比較方便,其本身也自帶了圖片上傳的處理
這里修改為TP上傳處理圖片,是為了保證上傳圖片的方便(目錄獨立於編輯器,便於增加水印等處理)
第一步:在模板html頁面引入如下文件:
<link rel="stylesheet" href="/data/editor/plugins/code/prettify.css" /> <script charset="utf-8" src="/data/editor/kindeditor.js"></script> <script charset="utf-8" src="/data/editor/lang/zh_CN.js"></script> <script charset="utf-8" src="/data/editor/plugins/code/prettify.js"></script> <script> KindEditor.ready(function(K) { var editor1 = K.create('textarea[name="content"]', { cssPath : '/data/editor/plugins/code/prettify.css', uploadJson : "/Home/Common/upload",//圖片上傳后的處理地址 }); prettyPrint(); }); </script>
路徑根據自己的項目不同,正確引入即可,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導致上傳之后總是彈窗報錯)