PHP CKEditor 上傳圖片實現(xiàn)代碼
更新時間:2009年11月06日 00:28:11 作者:
CKEditor的原包中沒有包含圖片的上傳服務器端處理文件,其公司的另一款開源產(chǎn)品:CKFinder做了很好的補充。但是要下載這個源代碼再進行配置,雖然方便了很多,但是僅僅為了上傳圖片,卻要使用這么大的整個系統(tǒng)來使用,確實有點大材小用。
我花了一個下午的時間,自己用PHP腳本寫了一個處理上傳文件的腳本代碼,沒有做更多的安全處理,希望對大家有用。
首先,在你的config.js文件里添加如下代碼:
CKEDITOR.editorConfig = function( config )
{
config.filebrowserImageUploadUrl = './upload.php?type=img';
config.filebrowserFlashUploadUrl = './upload.php?type=flash';
};
以上的配置是上傳要處理到的文件的地址,你可以根據(jù)自己情況進行修改。upload.php文件如下:
<?php
/*
CKEditor_upload.php
monkee
2009-11-15 16:47
*/
$config=array();
$config['type']=array("flash","img"); //上傳允許type值
$config['img']=array("jpg","bmp","gif"); //img允許后綴
$config['flash']=array("flv","swf"); //flash允許后綴
$config['flash_size']=200; //上傳flash大小上限 單位:KB
$config['img_size']=500; //上傳img大小上限 單位:KB
$config['message']="上傳成功"; //上傳成功后顯示的消息,若為空則不顯示
$config['name']=mktime(); //上傳后的文件命名規(guī)則 這里以unix時間戳來命名
$config['flash_dir']="/ckeditor/upload/flash"; //上傳flash文件地址 采用絕對地址 方便upload.php文件放在站內(nèi)的任何位置 后面不加"/"
$config['img_dir']="/ckeditor/upload/img"; //上傳img文件地址 采用絕對地址 采用絕對地址 方便upload.php文件放在站內(nèi)的任何位置 后面不加"/"
$config['site_url']=""; //網(wǎng)站的網(wǎng)址 這與圖片上傳后的地址有關 最后不加"/" 可留空
//文件上傳
uploadfile();
function uploadfile()
{
global $config;
//判斷是否是非法調(diào)用
if(empty($_GET['CKEditorFuncNum']))
mkhtml(1,"","錯誤的功能調(diào)用請求");
$fn=$_GET['CKEditorFuncNum'];
if(!in_array($_GET['type'],$config['type']))
mkhtml(1,"","錯誤的文件調(diào)用請求");
$type=$_GET['type'];
if(is_uploaded_file($_FILES['upload']['tmp_name']))
{
//判斷上傳文件是否允許
$filearr=pathinfo($_FILES['upload']['name']);
$filetype=$filearr["extension"];
if(!in_array($filetype,$config[$type]))
mkhtml($fn,"","錯誤的文件類型!");
//判斷文件大小是否符合要求
if($_FILES['upload']['size']>$config[$type."_size"]*1024)
mkhtml($fn,"","上傳的文件不能超過".$config[$type."_size"]."KB!");
//$filearr=explode(".",$_FILES['upload']['name']);
//$filetype=$filearr[count($filearr)-1];
$file_abso=$config[$type."_dir"]."/".$config['name'].".".$filetype;
$file_host=$_SERVER['DOCUMENT_ROOT'].$file_abso;
if(move_uploaded_file($_FILES['upload']['tmp_name'],$file_host))
{
mkhtml($fn,$config['site_url'].$file_abso,$config['message']);
}
else
{
mkhtml($fn,"","文件上傳失敗,請檢查上傳目錄設置和目錄讀寫權限");
}
}
}
//輸出js調(diào)用
function mkhtml($fn,$fileurl,$message)
{
$str='<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction('.$fn.', \''.$fileurl.'\', \''.$message.'\');</script>';
exit($str);
}
?>
代碼打包下載
首先,在你的config.js文件里添加如下代碼:
復制代碼 代碼如下:
CKEDITOR.editorConfig = function( config )
{
config.filebrowserImageUploadUrl = './upload.php?type=img';
config.filebrowserFlashUploadUrl = './upload.php?type=flash';
};
以上的配置是上傳要處理到的文件的地址,你可以根據(jù)自己情況進行修改。upload.php文件如下:
復制代碼 代碼如下:
<?php
/*
CKEditor_upload.php
monkee
2009-11-15 16:47
*/
$config=array();
$config['type']=array("flash","img"); //上傳允許type值
$config['img']=array("jpg","bmp","gif"); //img允許后綴
$config['flash']=array("flv","swf"); //flash允許后綴
$config['flash_size']=200; //上傳flash大小上限 單位:KB
$config['img_size']=500; //上傳img大小上限 單位:KB
$config['message']="上傳成功"; //上傳成功后顯示的消息,若為空則不顯示
$config['name']=mktime(); //上傳后的文件命名規(guī)則 這里以unix時間戳來命名
$config['flash_dir']="/ckeditor/upload/flash"; //上傳flash文件地址 采用絕對地址 方便upload.php文件放在站內(nèi)的任何位置 后面不加"/"
$config['img_dir']="/ckeditor/upload/img"; //上傳img文件地址 采用絕對地址 采用絕對地址 方便upload.php文件放在站內(nèi)的任何位置 后面不加"/"
$config['site_url']=""; //網(wǎng)站的網(wǎng)址 這與圖片上傳后的地址有關 最后不加"/" 可留空
//文件上傳
uploadfile();
function uploadfile()
{
global $config;
//判斷是否是非法調(diào)用
if(empty($_GET['CKEditorFuncNum']))
mkhtml(1,"","錯誤的功能調(diào)用請求");
$fn=$_GET['CKEditorFuncNum'];
if(!in_array($_GET['type'],$config['type']))
mkhtml(1,"","錯誤的文件調(diào)用請求");
$type=$_GET['type'];
if(is_uploaded_file($_FILES['upload']['tmp_name']))
{
//判斷上傳文件是否允許
$filearr=pathinfo($_FILES['upload']['name']);
$filetype=$filearr["extension"];
if(!in_array($filetype,$config[$type]))
mkhtml($fn,"","錯誤的文件類型!");
//判斷文件大小是否符合要求
if($_FILES['upload']['size']>$config[$type."_size"]*1024)
mkhtml($fn,"","上傳的文件不能超過".$config[$type."_size"]."KB!");
//$filearr=explode(".",$_FILES['upload']['name']);
//$filetype=$filearr[count($filearr)-1];
$file_abso=$config[$type."_dir"]."/".$config['name'].".".$filetype;
$file_host=$_SERVER['DOCUMENT_ROOT'].$file_abso;
if(move_uploaded_file($_FILES['upload']['tmp_name'],$file_host))
{
mkhtml($fn,$config['site_url'].$file_abso,$config['message']);
}
else
{
mkhtml($fn,"","文件上傳失敗,請檢查上傳目錄設置和目錄讀寫權限");
}
}
}
//輸出js調(diào)用
function mkhtml($fn,$fileurl,$message)
{
$str='<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction('.$fn.', \''.$fileurl.'\', \''.$message.'\');</script>';
exit($str);
}
?>
代碼打包下載
您可能感興趣的文章:
相關文章
連接到txt文本的超鏈接,不直接打開而是點擊后下載的處理方法
默認情況下瀏覽器Mime類型設定中會直接打開txt文本,但是如果想做到直接下載需要對Mime進行設置。2009-07-07php中可能用來加密字符串的函數(shù)[base64_encode、urlencode、sha1]
做新浪微博自動登錄時遇到的,身為一只大大的菜鳥,連登錄腳本都是別人寫好的自己改裝了用上去,到最后才明白那個腳本原來是獲取cookie用的,實在是反應遲鈍、抑或自己不用心2012-01-01php的chr和ord函數(shù)實現(xiàn)字符加減乘除運算實現(xiàn)代碼
這兩個函數(shù)到底有什么用呢? 用來做字符加減運算最合適了. 普通的字符是無法做加減運算指向下一個字符的. 而轉(zhuǎn)成ASCII后就可以做加減乘除了. 處理好后再轉(zhuǎn)成字符就可以了. 目前的很多字符串加密,解密都用到此功能!2011-12-12比較discuz和ecshop的截取字符串函數(shù)php版
網(wǎng)上看到一篇文章 discuz和ecshop截取字符串的兩個函數(shù),比較了一下兩個版本的函數(shù),都各有局限,只能在特定的前提下使用,但是學習一下有利于拓寬思路,了解PHP的擴展功能2012-09-09