PHP CKEditor 上传图片实现代码


Posted in PHP onNovember 06, 2009

我花了一个下午的时间,自己用PHP脚本写了一个处理上传文件的脚本代码,没有做更多的安全处理,希望对大家有用。
首先,在你的config.js文件里添加如下代码:

CKEDITOR.editorConfig = function( config ) 
{ 
config.filebrowserImageUploadUrl = './upload.php?type=img'; 
config.filebrowserFlashUploadUrl = './upload.php?type=flash'; 
};

以上的配置是上传要处理到的文件的地址,你可以根据自己情况进行修改。upload.php文件如下:
<?php 
/* 
CKEditor_upload.php 
monkee 
2009-11-15 16:47 
*/ 
$config=array(); 
$config['type']=array("flash","img"); //上传允许type值 
$config['img']=array("jpg","bmp","gif"); //img允许后缀 
$config['flash']=array("flv","swf"); //flash允许后缀 
$config['flash_size']=200; //上传flash大小上限 单位:KB 
$config['img_size']=500; //上传img大小上限 单位:KB 
$config['message']="上传成功"; //上传成功后显示的消息,若为空则不显示 
$config['name']=mktime(); //上传后的文件命名规则 这里以unix时间戳来命名 
$config['flash_dir']="/ckeditor/upload/flash"; //上传flash文件地址 采用绝对地址 方便upload.php文件放在站内的任何位置 后面不加"/" 
$config['img_dir']="/ckeditor/upload/img"; //上传img文件地址 采用绝对地址 采用绝对地址 方便upload.php文件放在站内的任何位置 后面不加"/" 
$config['site_url']=""; //网站的网址 这与图片上传后的地址有关 最后不加"/" 可留空 
//文件上传 
uploadfile(); 
function uploadfile() 
{ 
global $config; 
//判断是否是非法调用 
if(empty($_GET['CKEditorFuncNum'])) 
mkhtml(1,"","错误的功能调用请求"); 
$fn=$_GET['CKEditorFuncNum']; 
if(!in_array($_GET['type'],$config['type'])) 
mkhtml(1,"","错误的文件调用请求"); 
$type=$_GET['type']; 
if(is_uploaded_file($_FILES['upload']['tmp_name'])) 
{ 
//判断上传文件是否允许 
$filearr=pathinfo($_FILES['upload']['name']); 
$filetype=$filearr["extension"]; 
if(!in_array($filetype,$config[$type])) 
mkhtml($fn,"","错误的文件类型!"); 
//判断文件大小是否符合要求 
if($_FILES['upload']['size']>$config[$type."_size"]*1024) 
mkhtml($fn,"","上传的文件不能超过".$config[$type."_size"]."KB!"); 
//$filearr=explode(".",$_FILES['upload']['name']); 
//$filetype=$filearr[count($filearr)-1]; 
$file_abso=$config[$type."_dir"]."/".$config['name'].".".$filetype; 
$file_host=$_SERVER['DOCUMENT_ROOT'].$file_abso; 
if(move_uploaded_file($_FILES['upload']['tmp_name'],$file_host)) 
{ 
mkhtml($fn,$config['site_url'].$file_abso,$config['message']); 
} 
else 
{ 
mkhtml($fn,"","文件上传失败,请检查上传目录设置和目录读写权限"); 
} 
} 
} 
//输出js调用 
function mkhtml($fn,$fileurl,$message) 
{ 
$str='<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction('.$fn.', \''.$fileurl.'\', \''.$message.'\');</script>'; 
exit($str); 
} 
?>

代码打包下载
PHP 相关文章推荐
php 处理上百万条的数据库如何提高处理查询速度
Feb 08 PHP
php UTF-8、Unicode和BOM问题
May 18 PHP
php cookies中删除的一般赋值方法
May 07 PHP
解析isset与is_null的区别
Aug 09 PHP
php调用新浪短链接API的方法
Nov 08 PHP
PHP中使用Imagick操作PSD文件实例
Jan 26 PHP
Smarty最简单实现列表奇偶变色的方法
Jul 01 PHP
php 从一个数组中随机的取出若干个不同的数实例
Dec 31 PHP
PHP 信号管理知识整理汇总
Feb 19 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 PHP
PHP 压缩文件夹的类代码
Nov 05 #PHP
PHP 向右侧拉菜单实现代码,测试使用中
Nov 03 #PHP
网页游戏开发入门教程三(简单程序应用)
Nov 02 #PHP
网页游戏开发入门教程二(游戏模式+系统)
Nov 02 #PHP
初学CAKEPHP 基础教程
Nov 02 #PHP
PHP+MySQL 制作简单的留言本
Nov 02 #PHP
PHP+XML 制作简单的留言本 图文教程
Nov 02 #PHP
You might like
php的一个登录的类 [推荐]
2007/03/16 PHP
基于PHP一些十分严重的缺陷详解
2013/06/03 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
php简单计算权重的方法示例【适合抽奖类应用】
2019/06/10 PHP
js wmp操作代码小结(音乐连播功能)
2008/11/08 Javascript
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
JavaScript在for循环中绑定事件解决事件参数不同的情况
2014/01/20 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
Node.js实现文件上传
2016/07/05 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
bootstrap table服务端实现分页效果
2017/08/10 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
Python开发编码规范
2006/09/08 Python
利用Python实现Windows定时关机功能
2017/03/21 Python
Python+Wordpress制作小说站
2017/04/14 Python
Python实现的生成格雷码功能示例
2018/01/24 Python
基于python监控程序是否关闭
2020/01/14 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
Python实现井字棋小游戏
2020/03/09 Python
pyspark给dataframe增加新的一列的实现示例
2020/04/24 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
杭州-DOTNET笔试题集
2013/09/25 面试题
个人社会实践自我鉴定
2014/03/24 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
退休教师追悼词
2015/06/23 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python
HTTP中的Content-type详解
2022/01/18 HTML / CSS