ckeditor php 上传图片_在PHP怎么使用ckeditor上传图片

ckeditor默认并没有上传图片的按钮,其实并不是没有该功能,只是想要使用这项功能需要进行一些设置,具体方法如下:

1、如果你觉得上传窗口里的预览的那些东东挺不喜欢的话,可以在config.js里加上一句config.image_previewText="";立马搞定;还有一种方法是在ckeditor的安装目录里找\plugins\image\dialogs找到image.js,在里面找到相应的内容,把它们删了,也可以,不过千万不要删多了。

2、在ckeditor/plugins/image/dialogs/image.js搜索:id:'Upload',hidden:!0把上面的!0改成false。

3、导入ckeditor,这里介绍的是JS导入的方法,首先在页面中引入ckeditor核心文件ckeditor.js,具体是:;接着在使用编辑器的地方插入HTML控件,具体是:;最后将相应的控件替换成编辑器代码,具体是: CKEDITOR.replace('mytext');。

4、到这里还没完,还要在config.js里设置图片的处理文件,具体是在config.js的文件里加上一句:config.filebrowserImageUploadUrl=“URL”,引号里的URL是具体的图片处理文件的路径,包括文件名和后缀全都要。 至此就全部设置完成了。

5、这里要特别说一下关于在TP框架里怎么使用ckeditor的问题,因为TP的地址栏写法是经过rewrite的,所以格式跟通常的有所不同,那怎么办呢,事实上其它都一样,关键是第4步,TP的url一般写成http://server/a/b/c,本来这样写就可以了,但是如果是config.js里就写成:config.filebrowserImageUploadUrl=“/a/b/c”,就会报错,无法上传图片,而是必须在后面在加上一个参数才可以,比如写成:config.filebrowserImageUploadUrl=“/a/b/c/d/e”,这样才可以。

最后附上一段图片的上传处理函数:

function upload( $upPath=null, $size=3 ){

if( !$upPath ) return;

if( !$_FILES ) return;

$houzui = array("jpg","bmp","gif","png");

$upFilename = $_FILES['upload']['name'];

$upFilesize = $_FILES['upload']['size'];

if( $upFilesize > $size * 1024 * 1000 )

exit( "*文件大小不能超过3M");

$houz = pathInfo( $upFilename, 4 );

if( in_array( $houz, $houzui ) ){

$uri= str_replace('.','',uniqid("",TRUE)).".".$houz;

$fn = $upPath.$uri;

move_uploaded_file($_FILES['upload']['tmp_name'],$fn);

//预览的图片地址不能是本地地址,所以要进行替换,把本地地址替换成

//服务器地址,ROOT和HOST要自己声明

$fn = str_replace( ROOT, HOST, $upPath ) . $uri;

$call = $_REQUEST["CKEditorFuncNum"];

$str = "

$str .= "window.parent.CKEDITOR.tools.callFunction";

$str .= "($call,'".$fn."','');";

//这里是为了在编辑器里能预览图片

echo $str;

}else{

$str = "文件格式不正确";

$str .= "(必须为.jpg/.gif/.bmp/.png文件)";

echo $str;

}

}

以上针对的是较早版本(如3.6.5版)的CK,而如果是较新版的(如4.14版),则会有问题,虽然图片可以上传,但是会报错(不正确的服务器响应),图片无法插入到CK里面。原因是CKEditor从4.9.0版本开始引入了xhr方法上传文件,并且替代原来的form方法成为了默认的上次方法。在使用xhr上传时,前端提交的表单不会有CKEditorFuncNum字段,需要修改配置文件的filebrowserUploadMethod项使用form上传;当然还有方法是不需要接收CKEditorFuncNum。

总的来说处理这个问题有两种方法,方法一是不修改php处理文件,仍然通过接收CKEditorFuncNum来实现,那么就需要进行config设置,必须在config里加上一句:config.filebrowerUploadMethod = 'form',其它全部照旧。方法二是不修改设置,而是把原来的php处理文件的echo ""(这个写法跟上面函数里的写法稍有不同,实际上一个样),改成:echo "{'uploaded':1,'fileName':'','url':$desname}";也可以写成这样:$json['uploaded'] = 1;$json['fileName']='';$json['url] = $desname;echo json_encode( $json );

6a19a997d17dc08c84beabf4129f5c0c.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值