Ckeditor 缺少图像源文件地址的解决 由错误测试位置引起

Ckeditor

本文是关于CKEditor 无法上传图片问题的一个解决。大致写了一下遇到问题的过程,问题的出处,怎么解决的,原因是什么。

希望能够帮到有需要的大家,有些时候找不到问题的答案,真的是会让人神魂颠倒。

Ckeditor是新一代的FCKeditor,是一个重新开发的版本。Ckeditor是全球最优秀的网页在线文字编辑器之一,因其惊人的性能与可扩展性而广泛的被运用于各大网站。

今天在给自己的博客项目上添加ckeditor时,进行了一些测试。 出现了缺少图像源文件地址的问题!

在ckeditor的配置文件中,添加上关联ckfinder的代码,当然我们也要有ckfinder,就可以使用上传的功能了。

在ckedittor的配置文件 config.js 中 加入连接的配置代码。放到最后就好了。

// 载入CKfinder
	config.filebrowserBrowseUrl = '/App/Back/Public/ckfinder/ckfinder.html'; 
	config.filebrowserImageBrowseUrl = '/App/Back/Public/ckfinder/ckfinder.html?Type=Images';  
	config.filebrowserFlashBrowseUrl = '/App/Back/Public/ckfinder/ckfinder.html?Type=Flash'; 
	config.filebrowserUploadUrl = '/App/Back/Public/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files'; 
	config.filebrowserImageUploadUrl = '/App/Back/Public/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images'; 
	config.filebrowserFlashUploadUrl = '/App/Back/Public/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash';

成功后:

但是到了上传文件的时候,这个编辑器总是会卡死,在上传处出现一些隐蔽的代码。

getDocumentRootPath() . $baseUrl;} 
$utilsSecurity =& CKFinder_Connector_Core_Factory::getInstance("Utils_Security");
 $utilsSecurity->getRidOfMagicQuotes();
 /** * $config must be initialised */ $config = array();
 $config['Hooks'] = array();
 $config['Plugins'] = array();
 /** * Fix cookies bug in Flash. */ 
 if (!empty($_GET['command']) && $_GET['command'] == 'FileUpload' && !empty($_POST)) 
 { foreach ($_POST as $key => $val) 
		{ if (strpos($key, "ckfcookie_") === 0) $_COOKIE[str_replace("ckfcookie_", "", $key)] = $val;
		} 	
} 
/** * read config file */ require_once CKFINDER_CONNECTOR_CONFIG_FILE_PATH;
 
 CKFinder_Connector_Core_Factory::initFactory();
 $connector =& CKFinder_Connector_Core_Factory::getInstance("Core_Connector");
 if(isset($_GET['command'])) { $connector->executeCommand($_GET['command']);
 } else { $connector->handleInvalidCommand();
 } 

file:// 缺少图像源文件地址

网上也有一些相关的问题,大致分类:

  1. 找不到图片路径,并且有错误的代码,大致就是上面那个。没有人回答,这问题也就不了了之了。
  2. 原来我在tomcat上不能运行,是因为ckfinder是php的版本。 (Σ(っ °Д °;)っ 和我有什么关系)
  3. 大佬直接自己写了一堆js实现了上传功能。 (Σ(っ °Д °;)っ 这是什么操作)
  4. 修改配置文件,看了返回的值,什么 PHP V9 (Σ(っ °Д °;)っ 不可以用)

resolve

这里出现了一个问题,就是在测试代码的网站文件目录/test*下,设置好两个ck文件,一个测试的test.html,但是上传的时候出现找不到图片源地址的情况。

然后想,还要作后面的一堆东西呢,直接把这两ck文件,放到了正常的目录下。然后就可以正常上传了。

可以使用的时候是访问网站调用的,测试时是在文件直接打开test.html中调用的。

这两个之间的差别,就是运行时的目录不同

错误的测试:
直接打开,文件管理系统中的文件
file:///C:/phpStudy/WWW/blog/test/39test2.html
但是这个东西提交的时候,是提交到服务器端,谁是服务器端?这个东西怎么知道?一个单一的文件怎么可以调用php这个服务器端的脚本呢?

所以无法调用服务器端的php代码,就会出现上面的那个php报错的信息,同时它也不清楚传到那里去,就会出现找不到图片源地址的错误。

正确的测试:
www.blog.com/test/39test2.html

经验之谈

虽然有些东西完全可以在单个文档中测试,但是如果事关服务器,那就要在浏览器里键入网站的测试代码目录和文件,进行访问测试,而不能在本机上,离服务器一个西天的距离去测试。

以后要测试代码,最好直接通过web来访问测试文件夹,和测试的代码,而不能直接打开测试代码,那样就会和服务器脱节。

测试文件说: 哎,我一个小小的文件,怎么知道你的服务器在哪里? 😩

有时候就是这么一个小小的问题,确实很困扰人!

解决办法: 访问服务器端测试即可,可千万别文件测试了!

其实这个东西并没有那么难想到,但因为是自学,很多东西如果有个老师在旁边,一两句话就解决的事情,哪里需要吭哧吭哧想上4-5个小时……

posted @ 2021-06-17 15:10  Dba_sys  阅读(1559)  评论(0编辑  收藏  举报