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:// 缺少圖像源文件地址
網上也有一些相關的問題,大致分類:
- 找不到圖片路徑,並且有錯誤的代碼,大致就是上面那個。沒有人回答,這問題也就不了了之了。
- 原來我在tomcat上不能運行,是因為ckfinder是php的版本。 (Σ(っ °Д °;)っ 和我有什么關系)
- 大佬直接自己寫了一堆js實現了上傳功能。 (Σ(っ °Д °;)っ 這是什么操作)
- 修改配置文件,看了返回的值,什么 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個小時……