2011年6月12日 星期日

CKEditor + CKFinder:動態變更上傳路徑與檔名

CKEditor 版本:3.6
CKFinder 版本:2.0.2


設定上傳路徑
1. 設定上傳路徑的變數
執行頁的程式碼:
<td class="styletype2">
    <textarea id="pd_content" name="pd_content" cols="80" rows="10"></textarea>
    <?php
        include("../ckeditor/ckeditor.php");
        $CKEditor2 = new CKEditor();
        $CKEditor2->basePath = '../ckeditor';
        $CKEditor2->replace('pd_content');
        $_SESSION['ckeditor_baseUrl'] = '/files/images/';
    ?>
</td>
$_SESSION['ckeditor_baseUrl'] 這個變數就是你要設定的路徑。變數名稱及內容可自訂。

2. 將自訂的路徑寫到CKFinder 原始檔 \ckfinder\config.php
第 63 行
$baseUrl = '/ckfinder/userfiles/';

改成成下面這段:
if(!empty($_SESSION['ckeditor_baseUrl']))
    $baseUrl = $_SESSION['ckeditor_baseUrl'];
else
    $baseUrl = '/ckfinder/userfiles/';

如果有自訂路徑就使用自訂的路徑,否則使用原本預設的路徑


設定上傳檔名

設定上傳檔名
修改 CKFinder 原始檔 \ckfinder\core\connector\php\php5\CommandHandler\FileUpload.php
找到這段文字:
$sFileNameOrginal = $sFileName;
$oRegistry->set("FileUpload_fileName", $sFileName); //第85行
$oRegistry->set("FileUpload_url", $this->_currentFolder->getUrl());

在 85 行前面,插入 2 行程式碼
$ext_name = strrchr($sFileName, "."); //取得包含小數點的副檔名。例如 .jpg
$sFileName = 'img'.rand(0,99999).$ext_name; //五位數的亂數

$sFileNameOrginal = $sFileName;
$oRegistry->set("FileUpload_fileName", $sFileName); //原本的第85行
$oRegistry->set("FileUpload_url", $this->_currentFolder->getUrl());
$sFileName 就是上傳後的檔案名稱。改成你想要的內容就可以了。

沒有留言:

張貼留言