用户
 找回密码
 入住 CI 中国社区
搜索
查看: 9702|回复: 6
收起左侧

[已解决] ci + ckeditor + ckfinder 的上传路径问题

[复制链接]
发表于 2011-4-6 21:11:48 | 显示全部楼层 |阅读模式
本帖最后由 langziyang 于 2011-4-6 21:32 编辑

我是用的JS调用。ckeditor和ckfinder是放在与index.php同目录的js目录下的。
1.jpg


view中这样写的
先在头部调用:
JS复制代码
 
<script charset="utf-8" src="<?php echo base_url(); ?>js/ckeditor/ckeditor.js" type="text/javascript"></script>
<script charset="utf-8" src="<?php echo base_url(); ?>js/ckfinder/ckfinder.js" type="text/javascript"></script>
 
 
复制代码



然后是:
JS复制代码
 
<textarea id="post_area" cols="85" rows="30" name="content" ></textarea>
                        <script type="text/javascript">
                            CKEDITOR.replace( 'post_area',
                            {
                                filebrowserBrowseUrl : '<?php echo base_url();?>js/ckfinder/ckfinder.html',
                                filebrowserImageBrowseUrl : '<?php echo base_url();?>js/ckfinder/ckfinder.html?type=Images',
                                filebrowserFlashBrowseUrl : '<?php echo base_url();?>js/ckfinder/ckfinder.html?type=Flash',
                                filebrowserUploadUrl :
                                    '<?php echo base_url();?>js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files¤tFolder=/archive/',
                                filebrowserImageUploadUrl :
                                    '<?php echo base_url();?>js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images¤tFolder=/cars/',
                                filebrowserFlashUploadUrl : '<?php echo base_url();?>js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
                            }
                        );
                        </script>
 
 
复制代码




最后修改ckfinder下的config.php 为

PHP复制代码
 
function CheckAuthentication()
{
 
return true;
}
 
 
复制代码



最后一步是修改上传路径:
$baseUrl =‘’;
因为我的app是在localhost/ci中的,如果我的$baseUrl写成baseUrl='images' 的话,上传的图片直接上传到localhost去了,而不是上传到
localhost/ci/images内。

我本意是想上传到ci根目录下的images中。

还有一个问题是:直接上传的时候提示文件夹不存在。浏览服务器的时候用上传就可以…………………………

请问要怎么处理
发表于 2011-4-7 00:58:38 | 显示全部楼层
$baseUrl 建议写成相对路径,这个要看相对谁。
CI 里的相对路径都相对于 index.php
ck 就不清楚了。
发表于 2011-4-7 09:54:54 | 显示全部楼层
ckfinder里定义config.php or config.js
 楼主| 发表于 2011-4-7 13:00:31 | 显示全部楼层
ckfinder里定义config.php or config.js
smartweb 发表于 2011-4-7 09:54


我定义了config.php   本来上传文件是要放在localhost/ci/images/下的,结果直接放在了localhost下。也就是说CI程序目录不对
发表于 2011-8-7 02:01:23 | 显示全部楼层
本帖最后由 valentine7y 于 2011-8-7 02:01 编辑
langziyang 发表于 2011-4-7 13:00
我定义了config.php   本来上传文件是要放在localhost/ci/images/下的,结果直接放在了localhost下。也就 ...

在core/php ckfinder.php里面也有路径指定的,你看看你是不是覆盖了
发表于 2012-2-22 13:07:33 | 显示全部楼层
本帖最后由 策策啃鸡腿 于 2012-2-22 13:09 编辑

一:无法解析到正确目录
要求CK编辑器中增加文件上传的功能,其实是非常简单地加载一个CKfinder即可,可是别忘了CI用的路由器如果非$_GET型,你的URL就会使
域名/index.php/控制器/函数/参数 ,你会发现CKfinder很上传文件时,它将会将index.php/控制器/函数/参数 等作为你的目录,这样当然无法找到正确的脚本文件。
注意,如果你的CI开启了$_GET路由,即url形式为 域名/c= 控制器&f= 函数 的话,不必修改,
修改方法:
ckfinder/core/connector/ckfinder_php5.php 文件, 找到SetupCKEditorObject()函数在
if ( isset($url[0]) && $url[0] != ‘/’ ){}内部用
PHP复制代码
//正则去除$_SERVER[ 'REQUEST_URI' ]index.php之后的内容
$real_url = preg_replace("|(.*)/index.php/(.*)|i", "$1/", $_SERVER[ 'REQUEST_URI' ]);
$url = substr( $real_url, 0, strrpos( $real_url, '/' ) + 1 ) . $url ;
 
复制代码

来替换即可

二:config.php中的上传路径
一般而言,我们的程序都是本地测试后上传到服务器,本地的上传路径是已知的,而服务器可就不一定知道了,而且即使知道,一旦程序的路径有所变动,你的CKfinder还要重新配置,所以,一般而言,我都是用以下代码替代config.php中
$baseUrl那一行。

//var_dump($_SERVER['PHP_SELF']);
$right_ulr = explode('/',$_SERVER['PHP_SELF']);
$len = count($right_ulr);
for($i=0;$i<6;$i++)
    unset($right_ulr[count($right_ulr)-1]);
//var_dump($right_ulr);
$baseUrl = implode('/', $right_ulr).'/upload/pic/';

解释下代码
在for语句中$i<6中的6是指
ckfinder/core/connector/php中的connector.php
离网站根目录的目录数量,这个得依据你的ckfinder在网站逻辑根目录的路径决定
循环1:去除connector.php
循环 2:去除php
循环 3:去除connector
循环 4:去除core
循环 5:去除ckfinder
循环 6:去除ckfinder所属的plugins目录(这里看你自己的网站目录咯)

文件夹权限
/upload/pic/是指放在我网站根目录的upload/pic/文件夹下,注意权限777(win7允许完全控制)

这样,你的CI就能畅通无阻的享受ckfinder,而不必担心恼人的路径问题了

发表于 2012-9-20 19:17:21 | 显示全部楼层
策策啃鸡腿 发表于 2012-2-22 13:07
一:无法解析到正确目录
要求CK编辑器中增加文件上传的功能,其实是非常简单地加载一个CKfinder即可,可是 ...

第二种方法已借用
可以去看看我在CI中集成的ckeditor 和 ckfinder的使用方法
传送门:http://codeigniter.org.cn/forums ... hread&tid=14216

本版积分规则