如何将CKeditor编辑器的上传和thinkphp结合
转载:THINKPHP代码中 lxepoo的文章
有时候我们会发现,我们需要对上传文件进行日志记录,这样的记录通常写在LOG文件或数据库中,那么,通过TP本身的上传类,可以实现的,但是只能做到编辑器外上传并记录,而我们在编辑器内上传的图片、附件却无法捕获,所以这里我分享一个我写的小代码片段,仅供参考。
首先如果你不知道ckeditor,那么请忽略此文,谢谢。
当我们在模板中,将ckeditor配置好后,需要在JS代码中进行一些调整或修改,如下:
CKEDITOR.replace( 'v_content', {
filebrowserImageUploadUrl : '/Files/ck_upload.shtml'
});
复制代码
这里是在JS部分进行了修改,指定了当使用编辑器的图片功能时,上传的请求地址在那里。一般来说ckeditor是不带上传的,你把上面的配置调整好后,点击图片,就会出现上传功能,但是只是个架子,没有实际效果。具体的处理请看下面:
function ck_upload($ftype = 'image')
{
if($ftype == 'image'){
$ftype = array('jpg', 'gif', 'png', 'jpeg', 'bmp');
}
header("Content-type:text/html");
import('ORG.Net.UploadFile');
$upload = new UploadFile(); // 实例化上传类
$upload->maxSize = -1; // 设置附件上传大小
$upload->allowExts = $ftype; // 设置附件上传类型
$upload->savePath = './Public/Uploads/'; // 设置附件上传目录
$upload->autoSub = true;
$upload->subType = 'date';
if (!$upload->upload()) {// 上传错误提示错误信息
echo "<script type=\"text/javascript\">window.parent.CKEDITOR.tools.callFunction(".$this->_get('CKEditorFuncNum').", '/', '上传失败," . $upload->getErrorMsg() . "!');</script>";
} else {
//// 上传成功 获取上传文件信息并存入数据库
$info = $upload->getUploadFileInfo();
//获取具体的路径,用于返回给编辑器
$savepath = $info[0]['savepath'].$info[0]['savename'];
//下面的输出,会自动的将上传成功的文件路径,返回给编辑器。
echo "<script type=\"text/javascript\">window.parent.CKEDITOR.tools.callFunction(".$this->_get('CKEditorFuncNum').",'$savepath','');</script>";
}
}
复制代码
会发现TP的代码里,有两端是输出JS的,一个是报错,一个是返回图片,这个自己看一下,就能懂的。很简单的。
上传完成后,如下图,我使用的是防盗链模式,所以图片路径是.shtml,如果你按照上面的方式,那么你的返回路径可能是upload/img/abc.jpg之类的。
代码肯定没问题的,我N个项目里在用,这样做的目的是,我能控制文件了,能控制它的上传时间,对文件进行权限管理等等,这些都是很方便的。另外,在附送一个防盗链的方法,前提是,将图片路径存在数据库里。
我这里,文件的表示使用的是id标示:
function getfile($id) {
$res = M('files')->find($id);
$file = $res['savepath'];
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header('Pragma: public');
$sTmpVar = fread(fopen($file, 'r'), filesize($file));
echo $sTmpVar;
}
}
复制代码
将就看下把,$res['savepath']就是数据库里的文件路径,这个方法照抄就行了。这样你就能把upload/img/xxx.jpg转化成诸如file/1022.shtml之类的URL了,防盗链和权限还不是你说了算?呵呵。
半夜了,写的比较匆忙,大家有兴趣试一下,有问题可以留言,我会抽时间回复一下的。
如何将CKeditor编辑器的上传和thinkphp结合的更多相关文章
- (配置)CKEditor+CKFinder+php上传配置,根据年月命名创建文件夹来存放
CKEditor+CKFinder+php上传配置 新版本的CKEditor只提供了基本的文本编辑功能,上传模块由另一个组件CKFinder.这里主要记录CKFinder上传的一些参数配置,能够成功上 ...
- dedecms 5.7文章编辑器附件上传图标不显示
我最近发现在使用dedecms 5.7文章编辑器附件上传图标不显示了,以前是没有问题的,这个更新系统就出来问题了,下面我来给大家分享此问题解决办法. 问题bug:在dedecms 5.7中发现了一 ...
- 【HTML5+MVC4】xhEditor网页编辑器图片上传
准备工作: 创建一个MVC项目中,添加好xhEditor插件 相关用法:http://www.cnblogs.com/xcsn/p/4701497.html 注意事项:xhEditor分为v1.1.1 ...
- 百度编辑器前后端二开图片上传Js Thinkphp tp5 ueditor
百度编辑器图片上传Jsueditor.all.min.js 下载链接 链接:https://pan.baidu.com/s/1VNgw9ELgRRHKeCQheFkQTw 提取码:fnfi 使用方法: ...
- ThinkPHP3.1.3 整合 UEditor百度编辑器 图片上传
第一步.前端模板实例化百度编辑器 <js file='__ROOT__/Data/UEditor/ueditor.config.js' /> <js file='__ROOT__/D ...
- 使用struts2完成ckeditor和图片上传
代码地址如下:http://www.demodashi.com/demo/12427.html 使用struts2完成ckeditor和ckeditor图片上传 ckeditor版本ckeditor_ ...
- CKEditor实现图片上传
本人用的CKEditor版本为4.3 CKEditor配置和部署参考CKEditor4.x部署和配置. CKEditor编辑器的工具栏中初始的时候应该是这样子的,没有图片上传按钮 并且预览中有一堆火星 ...
- 用CKEDITOR 做自助上传的解决方案2
1,在plugins下新建文件夹 multiimg 2,创建文件plugin.js (function() { CKEDITOR.plugins.add("multiimg", { ...
- struts2+ckeditor配置图片上传
又是一个漫漫长夜. 公司的编辑器坏了,用的是百度编辑器,上传图片的网址被框架给拦截了,我们本地怎么测试都没问题,放到服务器就这样了.和老李找了半天,疯了,没原因的. 笔者以前用过jsp+ckedito ...
随机推荐
- Winform 可取消的单选按钮(RadioButton)
在项目当中有一组选择项,要求单选并且可以取消,但Winform提供的单选按钮一旦选择上就不能取消了,经过研究和测试,总算搞定了功能的要求,主要代码如下,就不一一说明了,代码里有注释,给有需要的朋友一个 ...
- 【译】用jQuery 处理XML--浏览器中的XML与JavaScript
用jQuery 处理XML--写在前面的话 用jQuery 处理XML-- DOM(文本对象模型)简介 用jQuery 处理XML--浏览器中的XML与JavaScript 用jQuery 处理XML ...
- Spring-Context之六:基于Setter方法进行依赖注入
上文讲了基于构造器进行依赖注入,这里讲解基于Setter方法进行注入.在Java世界中有个约定(Convention),那就是属性的设置和获取的方法名一般是:set+属性名(参数)及get+属性名() ...
- JavaScript 误区
接触JavaScript两年多遇到过各种错误,其中有一些让人防不胜防,原来对JavaScript的误会如此之深,仅以此文总结一下常见的各种想当然的误区 String replace string的re ...
- iOS instruments trace文件解析方案
前言 已很少写文章,不过这次感觉有必要写一下.因为: 1. 这个方案通过debug逆向得来,很有参考意义. 2. iOS这方面资料非常少,做这块时,无论国内外,翻遍了google,baidu都没太多合 ...
- 翻译:AKKA笔记 - Actor消息 -1(一)
从第一篇Akka笔记的介绍中,我们是从很高的高度去观察Akka工具箱中的Actors.在这篇笔记的第二篇,我们会看一下Actors中的消息部分.而且延续上一次的例子,我们还会使用同样的学生与老师的例子 ...
- Model模型和Module模块的区别
资料是从网上找的,具体是谁最先写的,不清楚了. Model通常是指模型.这个模型也许是你需求分析出来的, 也许是你算法做出来的. 不过最大可能是MVC的网站,或者是GUI开发模式中的M里的那个模型. ...
- 《Effective Java》—— 创建与销毁对象
本篇主要总结的是<Effecticve Java>中关于创建和销毁对象的内容. 比如: 何时以及如何创建对象 何时以及如何避免创建对象 如何确保及时销毁 如何管理对象销毁前的清理动作 考虑 ...
- 大型网站系统与Java中间件实践
大型网站系统与Java中间件实践(贯通分布式高并发高数据高访问量网站架构与实现之权威著作,九大一线互联网公司CTO联合推荐) 曾宪杰 著 ISBN 978-7-121-22761-5 2014年4 ...
- chrome调试本地项目, 引用本地javascript文件
chrome调试本地项目, 引用本地javascript文件 本地文件可以访问本地文件 修改快捷方式属性 C:\Users\xxx\AppData\Local\Google\Chrome\Applic ...