欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

phpcms模塊開(kāi)發(fā)之swfupload的使用介紹_PHP教程

編輯Tag賺U幣

推薦:基于ubuntu下nginx+php+mysql安裝配置的具體操作步驟
本篇文章介紹了,基于ubuntu下nginx+php+mysql安裝配置的具體操作步驟。需要的朋友參考下

正式接觸phpcms模塊開(kāi)發(fā)后.開(kāi)發(fā)了幾個(gè)功能模塊.其中遇到了需要批量上傳圖片的問(wèn)題.于是開(kāi)始挖掘phpcms里面的swfupload的用法.

phpcms里面自帶的內(nèi)容類(lèi)型里面能夠直接指定圖片組.不過(guò)這樣的圖片組功能并不是我想用的.我需要上傳一整個(gè)靜態(tài)的html文件.需要

能夠找到一個(gè)方法上傳整個(gè)文件夾.并且能夠保留原來(lái)的文件名稱(chēng).

目的總結(jié)如下:

1,不改變系統(tǒng)的文件和目錄結(jié)構(gòu).

2,實(shí)現(xiàn)多附件上傳功能.

3,能夠得到上傳后的文件夾名稱(chēng).

在phpcms中自帶了附件上傳的功能.我想去用swfupload功能,而這個(gè)功能被phpcms的附件上傳功能集成進(jìn)去了.那我要做的就是抽出來(lái)并加以修改.

第一步,我來(lái)研究研究這個(gè)是怎么調(diào)用的.

首先,打開(kāi)firefox瀏覽器的firebug 打開(kāi)網(wǎng)絡(luò)面板.找到phpcm中swfupload唄調(diào)出的那個(gè)按鈕.看看系統(tǒng)是請(qǐng)求的什么連接.

復(fù)制代碼 代碼如下:www.ghpqjb.com

?m=attachment&c=attachments&a=swfupload&args=10,,1&module=&catid=&authkey=b756a93dea2e627293e88fa9d62af709&pc_hash=iXFbo1

我們捕捉到一串這樣的請(qǐng)求.調(diào)用了attachment模塊的attachements控制器里面的swfupload方法.

我們?nèi)フ业竭@個(gè)模塊中的這個(gè)控制器里面的這個(gè)方法.

在phpcms/modoules/attachemet/attachemts.php里面

打開(kāi)看看,代碼如下

復(fù)制代碼 代碼如下:www.ghpqjb.com

public function swfupload(){
$grouplist = getcache('grouplist','member');
if(isset($_POST['dosubmit'])){
      //if里面的內(nèi)容我們暫時(shí)不看.因?yàn)檫@是上傳之后的處理.我們要先找到是如何引入swfupload的.
} else {
if($this->isadmin==0 && !$grouplist[$this->groupid]['allowattachment']) showmessage(L('att_no_permission'));
$args = $_GET['args'];//得到參數(shù)
$authkey = $_GET['authkey'];//得到密匙
if(upload_key($args) != $authkey) showmessage(L('attachment_parameter_error'));//驗(yàn)證密匙
extract(getswfinit($_GET['args']));//拆分參數(shù)
$siteid = $this->get_siteid();//得到網(wǎng)站id
$site_setting = get_site_setting($siteid);//得到網(wǎng)站設(shè)置
$file_size_limit = sizecount($site_setting['upload_maxsize']*1024);//允許上傳大小
$att_not_used = param::get_cookie('att_json');//得到未處理的文件列表
if(empty($att_not_used) || !isset($att_not_used)) $tab_status = ' class="on"';//如果有未處理的設(shè)置標(biāo)簽樣式為on
if(!empty($att_not_used)) $div_status = ' hidden';//否則隱藏標(biāo)簽
$att = $this->att_not_used();//獲取臨時(shí)未處理文件列表
include $this->admin_tpl('swfupload');//這個(gè)地方才是關(guān)鍵.加載了這個(gè)模板.
}
}

前面的我們就先不管了 ,那是處理上傳的東西.我從else開(kāi)始看.首先驗(yàn)證了是否允許附件上傳

然后從$_GET里面得到swfupload的參數(shù)args,然后去驗(yàn)證了密匙,密匙通過(guò)了去解析args.得到網(wǎng)站的id,得到網(wǎng)站的設(shè)置,得到允許上傳附件的大小.從cookie里面得到未使用的附件列表.

設(shè)置模板里面的各種顯示.最后也是最關(guān)鍵的.它使用了swfupload模板.也就是說(shuō)我要找到這個(gè)模板.看看swfupload是怎么引過(guò)來(lái)的.

模板在這里:phpcms/modules/attachment/templates/swfupload.tpl.php

打開(kāi)模板文件.模板文件上面引入了一堆文件:

復(fù)制代碼 代碼如下:www.ghpqjb.com

<?php $show_header = $show_validator = $show_scroll = 1; include $this->admin_tpl('header', 'attachment');?>
<link href="<?php echo JS_PATH?>swfupload/swfupload.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" type="text/javascript" src="<?php echo JS_PATH?>swfupload/swfupload.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo JS_PATH?>swfupload/file<script language="JavaScript" type="text/javascript" src="<?php echo JS_PATH?>swfupload/handlers2.js"></script>
<script type="text/javascript">
<?php echo initupload($_GET['module'],$_GET['catid'],$args,$this->userid,$this->groupid,$this->isadmin)?>
</script>

首先是引入了頭文件.我大概看里一下.里面有
jquery什么的.是必要文件.所以一會(huì)我們要用的時(shí)候也要引入這個(gè)頭.

之后是swfupload的樣式文件和必要的JS.這里調(diào)用了一個(gè)系統(tǒng)函數(shù)initupload,這個(gè)函數(shù)到底是干嘛的.

千萬(wàn)別小覷這行.整個(gè)swfupload的配置都在這里了.

我們?nèi)フ艺铱催@個(gè)函數(shù).

在phpcms/modules/attachment/functions/golable.func.php里面找到了它的蹤跡.代碼如下,這個(gè)函數(shù)的主要作用就是配置swfupload這個(gè)插件.

復(fù)制代碼 代碼如下:www.ghpqjb.com

/* flash上傳初始化
* 初始化swfupload上傳中需要的參數(shù)
* @param $module 模塊名稱(chēng)
* @param $catid 欄目id
* @param $args 傳遞參數(shù)
* @param $userid 用戶(hù)id
* @param $groupid 用戶(hù)組id
* @param $isadmin 是否為管理員模式
*/
function initupload($module, $catid,$args, $userid, $groupid = '8', $isadmin = '0'){
$grouplist = getcache('grouplist','member');
if($isadmin==0 && !$grouplist[$groupid]['allowattachment']) return false;
extract(getswfinit($args));
$siteid = param::get_cookie('siteid');
$site_setting = get_site_setting($siteid);
$file_size_limit = $site_setting['upload_maxsize'];
$sess_id = SYS_TIME;
$swf_auth_key = md5(pc_base::load_config('system','auth_key').$sess_id);
$init = 'var swfu = \'\';
$(document).ready(function(){
swfu = new SWFUpload({
flash_url:"'.JS_PATH.'swfupload/swfupload.swf?"+Math.random(),
upload_url:"'.APP_PATH.'index.php?m=attachment&c=attachments&a=swfupload&dosubmit=1",
file_post_name : "Filedata",
post_params:{"SWFUPLOADSESSID":"'.$sess_id.'","module":"'.$module.'","catid":"'.$_GET['catid'].'","userid":"'.$userid.'","siteid":"'.$siteid.'","dosubmit":"1","thumb_width":"'.$thumb_width.'","thumb_height":"'.$thumb_height.'","watermark_enable":"'.$watermark_enable.'","filetype_post":"'.$file_types_post.'","swf_auth_key":"'.$swf_auth_key.'","isadmin":"'.$isadmin.'","groupid":"'.$groupid.'"},
file_size_limit:"'.$file_size_limit.'",
file_types:"'.$file_types.'",
file_types_description:"All Files",
file_upload_limit:"'.$file_upload_limit.'",
custom_settings : {progressTarget : "fsUploadProgress",cancelButtonId : "btnCancel"},

button_image_url: "",
button_width: 75,
button_height: 28,
button_placeholder_id: "buttonPlaceHolder",
button_text_style: "",
button_text_top_padding: 3,
button_text_left_padding: 12,
button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
button_cursor: SWFUpload.CURSOR.HAND,

file_dialog_start_handler : fileDialogStart,
file_queued_handler : fileQueued,
file_queue_error_handler:fileQueueError,
file_dialog_complete_handler:fileDialogComplete,
upload_progress_handler:uploadProgress,
upload_error_handler:uploadError,
upload_success_handler:uploadSuccess,
upload_complete_handler:uploadComplete
});
})';
return $init;
}


回到正題.我們來(lái)看模板swfupload.tpl.php

這個(gè)模板使用了一個(gè)js來(lái)控制<li>以頁(yè)簽的形式顯示.我們可以用firebug去找到帶有我們要找到的swfupload按鈕的那個(gè)頁(yè)簽的id

那個(gè)id是tab_swf_1

這個(gè)是一個(gè)div 代碼如下.

復(fù)制代碼 代碼如下:www.ghpqjb.com

<div id="div_swf_1" class="content pad-10 <?php echo $div_status?>">
<div>
<div class="addnew" id="addnew">
<span id="buttonPlaceHolder"></span>
</div>
<input type="button" id="btupload" value="<?php echo L('start_upload')?>" onClick="swfu.startUpload();" />
<div id="nameTip" class="onShow"><?php echo L('upload_up_to')?><font color="red"> <?php echo $file_upload_limit?></font> <?php echo L('attachments')?>,<?php echo L('largest')?> <font color="red"><?php echo $file_size_limit?></font></div>
<div class="bk3"></div>

<div class="lh24"><?php echo L('supported')?> <font style="font-family: Arial, Helvetica, sans-serif"><?php echo str_replace(array('*.',';'),array('','、'),$file_types)?></font> <?php echo L('formats')?></div><input type="checkbox" id="watermark_enable" value="1" <?php if(isset($watermark_enable) &&$watermark_enable == 1) echo 'checked'?> onclick="change_params()"> <?php echo L('watermark_enable')?>
</div>
<div class="bk10"></div>
<fieldset class="blue pad-10" id="swfupload">
<legend><?php echo L('lists')?></legend>
<ul class="attachment-list" id="fsUploadProgress">
</ul>
</fieldset>
</div>


在這里我們看到有一個(gè)span id是buttonPlaceHolder 而在配置文件中有這么一行button_placeholder_id: "buttonPlaceHolder",很明顯.當(dāng)頁(yè)面被加載的時(shí)候 id為buttonPlaceHolder的元素會(huì)被JS替換成swfupload的上傳控件.

之后一步我們要在點(diǎn)選完文件之后觸發(fā)swf的上傳方法

會(huì)在代碼中找到如下代碼.這里面調(diào)用了swfu.startUpload()方法.這個(gè)方法定義的地方在swfupload.js里面.我們無(wú)需理會(huì).

復(fù)制代碼 代碼如下:www.ghpqjb.com

<input type="button" id="btupload" value="<?php echo L('start_upload')?>" onClick="swfu.startUpload();" />

至此.我們已經(jīng)找到了swfupload的上傳控件使用方法

怎么在我的程序里面調(diào)用這個(gè)東東呢

首先一點(diǎn) 我們需要在這個(gè)控件出現(xiàn)的模板里面引入這些必要的文件

復(fù)制代碼 代碼如下:www.ghpqjb.com

<link href="<?php echo JS_PATH?>swfupload/swfupload.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" type="text/javascript" src="<?php echo JS_PATH?>swfupload/swfupload.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo JS_PATH?>swfupload/fileprogress.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo JS_PATH?>swfupload/handlers2.js"></script>
<script type="text/javascript">
<?php echo initupload($_GET['module'],$_GET['catid'],$args,$this->userid,$this->groupid,$this->isadmin)?>
</script>

代碼如上所示.

然后在我們的模板里面想要放置swfupload的地方寫(xiě)上這樣的標(biāo)簽

復(fù)制代碼 代碼如下:www.ghpqjb.com

<span id="buttonPlaceHolder"></span>
<input type="button" id="btupload" value="<?php echo L('start_upload')?>" onClick="swfu.startUpload();

這樣我們就已經(jīng)把swfupload引入到我們需要的地方了.接著就是能夠正常執(zhí)行上傳等功能.

但是這樣還不能達(dá)到我們的需求.而且有一個(gè)問(wèn)題.我們把文件上傳到神馬地方去了.那我們就來(lái)找找我們把文件上傳到神馬地方去了

在配置文件(用initupload函數(shù)輸出的)里面有這樣一行

復(fù)制代碼 代碼如下:www.ghpqjb.com

upload_url:"'.APP_PATH.'index.php?m=attachment&c=attachments&a=swfupload&dosubmit=1",

這個(gè)很明顯就透露出了我們把文件上傳到了attachment模塊中attachments控制器里面的swfupload方法去處理了

這個(gè)地方也就是我之前沒(méi)有關(guān)注的if里面的東西.

拿出來(lái)看看

復(fù)制代碼 代碼如下:www.ghpqjb.com

if( $_POST['swf_auth_key'] != md5(pc_base::load_config('system','auth_key').$_POST['SWFUPLOADSESSID']) || ($_POST['isadmin']==0 && !$grouplist[$_POST['groupid']]['allowattachment'])) exit();
pc_base::load_sys_class('attachment','',0);
$attachment = new attachment($_POST['module'],$_POST['catid'],$_POST['siteid']);
$attachment->set_userid($_POST['userid']);
$aids = $attachment->upload('Filedata',$_POST['filetype_post'],'','',array($_POST['thumb_width'],$_POST['thumb_height']),$_POST['watermark_enable']);
if($aids[0]) {
$filename= (strtolower(CHARSET) != 'utf-8') ? iconv('gbk', 'utf-8', $attachment->uploadedfiles[0]['filename']) : $attachment->uploadedfiles[0]['filename'];
if($attachment->uploadedfiles[0]['isimage']) {
echo $aids[0].','.$this->upload_url.$attachment->uploadedfiles[0]['filepath'].','.$attachment->uploadedfiles[0]['isimage'].','.$filename;
} else {
$fileext = $attachment->uploadedfiles[0]['fileext'];
if($fileext == 'zip' || $fileext == 'rar') $fileext = 'rar';
elseif($fileext == 'doc' || $fileext == 'docx') $fileext = 'doc';
elseif($fileext == 'xls' || $fileext == 'xlsx') $fileext = 'xls';
elseif($fileext == 'ppt' || $fileext == 'pptx') $fileext = 'ppt';
elseif ($fileext == 'flv' || $fileext == 'swf' || $fileext == 'rm' || $fileext == 'rmvb') $fileext = 'flv';
else $fileext = 'do';
echo $aids[0].','.$this->upload_url.$attachment->uploadedfiles[0]['filepath'].','.$fileext.','.$filename;
}
exit;
} else {
echo '0,'.$attachment->error();
exit;

這個(gè)里面有幾行是比較重要的.

首先它載入了系統(tǒng)的attachment類(lèi).并且用到了里面的方法.

程序?qū)ι蟼鞒晒ψ隽薳cho操作.返回的東西是 返回了編號(hào),上傳后的地址,拓展名,文件名.

這些東西是給誰(shuí)用的啊 我們還得回去看配置文件.

配置文件里面有一段是上傳過(guò)程中各個(gè)事件將觸發(fā)的方法. 有開(kāi)始上傳的.有上傳成功的,有上傳失敗的.等等.

我們可以看見(jiàn)有一個(gè)方法是file_dialog_complete_handler:fileDialogComplete,

其實(shí)這些已經(jīng)升級(jí)到swfupload的范疇了.有興趣可以去研究研究

然后我們?cè)趐hpcms/static/swfupload/handler.js里面找到這個(gè)方法.

看見(jiàn)上傳成功后echo出來(lái)的數(shù)據(jù)被解析了.

解析的方法如下

復(fù)制代碼 代碼如下:www.ghpqjb.com

function att_show(serverData,file)
{
var serverData = serverData.replace(/<div.*?<\/div>/g,'');
var data = serverData.split(',');
var id = data[0];
var src = data[1];
var ext = data[2];
var filename = data[3];
if(id == 0) {
alert(src)
return false;
}
if(ext == 1) {
var img = '<a href="javascript:;" onclick="javascript:att_cancel(this,'+id+',\'upload\')" class="on"><div class="icon"></div><img src="'+src+'" width="80" imgid="'+id+'" path="'+src+'" title="'+filename+'"/></a>';
} else {
var img = '<a href="javascript:;" onclick="javascript:att_cancel(this,'+id+',\'upload\')" class="on"><div class="icon"></div><img src="statics/images/ext/'+ext+'.png" width="80" imgid="'+id+'" path="'+src+'" title="'+filename+'"/></a>';
}
$.get('index.php?m=attachment&c=attachments&a=swfupload_json&aid='+id+'&src='+src+'&filename='+filename);
$('#fsUploadProgress').append('<li><div id="attachment_'+id+'" class="img-wrap"></div></li>');
$('#attachment_'+id).html(img);
$('#att-status').append('|'+src);
$('#att-name').append('|'+filename);
}

這個(gè)方法的目的是在id為fsuuploadprogress的元素里面添加我們上傳成功的附件.但是我們還木有找到文件到底去哪里了

關(guān)鍵的地方來(lái)了.我們?cè)趕wfupload方法里面不是有個(gè)attachment的系統(tǒng)類(lèi)的實(shí)例么

真正上傳附件是在這里實(shí)現(xiàn)的.我們調(diào)用了attachment里面的upload方法來(lái)實(shí)現(xiàn)了文件的上傳.

這個(gè)attachment文件里面的upload方法在系統(tǒng)類(lèi)里面 也就是phpcms/libs/classes/attachment.class.php里面

在這個(gè)類(lèi)里面我們可以找到upload方法里面有這樣一行

復(fù)制代碼 代碼如下:www.ghpqjb.com

$this->savepath = $this->upload_root.$this->upload_dir.date('Y/md/');

這個(gè)自然就是指定了上傳到的目錄.文件名是通過(guò)getname方法來(lái)獲取的.

到這里我們就理清思路了.

系統(tǒng)是這么運(yùn)行的

首先在模板里面引用swfupload(配置文件是用函數(shù)生成的)->上傳文件->attachment模塊里的swfupload方法處理(使用系統(tǒng)的attachment類(lèi)里面的upload方法循環(huán)上傳附件.并返回結(jié)果給swfupload方法)->處理結(jié)果通過(guò)swfupload的方法(fileDialogComplete)返回給頁(yè)面.

在上面我們已經(jīng)實(shí)現(xiàn)了在模板里面引入swfupload.但是我們使用的配置文件和上傳附件的方法等都是系統(tǒng)原來(lái)自帶的.并不能實(shí)現(xiàn)我想要的目錄結(jié)構(gòu)和文件命名方法.怎么辦..

改.

怎么改,首先們要把配置文件改掉. 在自己的模塊里面的functions文件夾里面建立自己的函數(shù).我們用自己的函數(shù)名稱(chēng) 文件命名為global.func.php這樣系統(tǒng)會(huì)通過(guò)auto_load把我們的函數(shù)加載

進(jìn)去我們把系統(tǒng)中attachment模塊functions文件夾下面的global.func.php里面的initupload函數(shù)全盤(pán)拷貝進(jìn)來(lái).只修改其中的一行

復(fù)制代碼 代碼如下:www.ghpqjb.com

upload_url:"'.APP_PATH.'index.php?m=你的模塊名稱(chēng)&c=你的控制器名稱(chēng)&a=你的方法名稱(chēng)&dosubmit=1",

這樣文件就會(huì)提交到我們的控制器下面.并且調(diào)用我們自己寫(xiě)的方法

然后我們?nèi)ジ南到y(tǒng)的attachment類(lèi) 我們?cè)谧约旱哪K下的classes文件夾下面建立一個(gè)myattachment.class.php

寫(xiě)一個(gè)我們自己的類(lèi).去集成系統(tǒng)的attachment類(lèi).(記得吧里面的私有方法copy過(guò)來(lái).)我們需要修改幾行.首先一點(diǎn)是吧upload方法里面的上傳目錄改掉.然后是改掉文件名的命名方法.

復(fù)制代碼 代碼如下:www.ghpqjb.com

function upload($field, $alowexts = '', $maxsize = 0, $overwrite = 0,$thumb_setting = array(), $watermark_enable = 1) {
if(!isset($_FILES[$field])) {
$this->error = UPLOAD_ERR_OK;
return false;
}
if(empty($alowexts) || $alowexts == '') {
$site_setting = $this->_get_site_setting($this->siteid);
$alowexts = $site_setting['upload_allowext'];
}
$fn = $_GET['CKEditorFuncNum'] ? $_GET['CKEditorFuncNum'] : '1';

$this->field = $field;
$this->savepath = $this->upload_root.$this->upload_dir.date('Ymd');//這里我們需要修改下.也可以不修改.在我們實(shí)例化這個(gè)類(lèi)的時(shí)候再來(lái)指定目錄.
$this->alowexts = $alowexts;
$this->maxsize = $maxsize;
$this->overwrite = $overwrite;
$uploadfiles = array();
$description = isset($GLOBALS[$field.'_description']) ? $GLOBALS[$field.'_description'] : array();
if(is_array($_FILES[$field]['error'])) {
$this->uploads = count($_FILES[$field]['error']);
foreach($_FILES[$field]['error'] as $key => $error) {
if($error === UPLOAD_ERR_NO_FILE) continue;
if($error !== UPLOAD_ERR_OK) {
$this->error = $error;
return false;
}
$uploadfiles[$key] = array('tmp_name' => $_FILES[$field]['tmp_name'][$key], 'name' => $_FILES[$field]['name'][$key], 'type' => $_FILES[$field]['type'][$key], 'size' => $_FILES[$field]['size'][$key], 'error' => $_FILES[$field]['error'][$key], 'description'=>$description[$key],'fn'=>$fn);
}
} else {
$this->uploads = 1;
if(!$description) $description = '';
$uploadfiles[0] = array('tmp_name' => $_FILES[$field]['tmp_name'], 'name' => $_FILES[$field]['name'], 'type' => $_FILES[$field]['type'], 'size' => $_FILES[$field]['size'], 'error' => $_FILES[$field]['error'], 'description'=>$description,'fn'=>$fn);
}

if(!dir_create($this->savepath)) {
$this->error = '8';
return false;
}
if(!is_dir($this->savepath)) {
$this->error = '8';
return false;
}
@chmod($this->savepath, 0777);

if(!is_writeable($this->savepath)) {
$this->error = '9';
return false;
}
if(!$this->is_allow_upload()) {
$this->error = '13';
return false;
}
$aids = array();
foreach($uploadfiles as $k=>$file) {
$fileext = fileext($file['name']);
if($file['error'] != 0) {
$this->error = $file['error'];
return false;
}
if(!preg_match("/^(".$this->alowexts.")$/", $fileext)) {
$this->error = '10';
return false;
}
if($this->maxsize && $file['size'] > $this->maxsize) {
$this->error = '11';
return false;
}
if(!$this->isuploadedfile($file['tmp_name'])) {
$this->error = '12';
return false;
}
//$temp_filename = $this->getname($fileext);//名稱(chēng)在這里.我們需要修改下
       $temp_filename = $file['tmp_name'].$fileext; //修改成原來(lái)的系統(tǒng)文件名稱(chēng).
       $savefile = $this->savepath.$temp_filename; $savefile = preg_replace("/(php|phtml|php3|php4|jsp|exe|dll|asp|cer|asa|shtml|shtm|aspx|asax|cgi|fcgi|pl)(\.|$)/i", "_\\1\\2", $savefile); $filepath = preg_replace(new_addslashes("|^".$this->upload_root."|"), "", $savefile); if(!$this->overwrite && file_exists($savefile)) continue; $upload_func = $this->upload_func; if(@$upload_func($file['tmp_name'], $savefile)) { $this->uploadeds++; @chmod($savefile, 0644); @unlink($file['tmp_name']); $file['name'] = iconv("utf-8",CHARSET,$file['name']); $uploadedfile = array('filename'=>$file['name'], 'filepath'=>$filepath, 'filesize'=>$file['size'], 'fileext'=>$fileext, 'fn'=>$file['fn']); $thumb_enable = is_array($thumb_setting) && ($thumb_setting[0] > 0 || $thumb_setting[1] > 0 ) ? 1 : 0; $image = new image($thumb_enable,$this->siteid); if($thumb_enable) { $image->thumb($savefile,'',$thumb_setting[0],$thumb_setting[1]); } if($watermark_enable) { $image->watermark($savefile, $savefile); } $aids[] = $this->add($uploadedfile); } } return $aids; }


注:這里我們可以再系統(tǒng)的attachment模塊下建立MY_attachment.php 但是這樣會(huì)影響系統(tǒng)的附件上傳功能.

在我們自己的控制器里面.我們這個(gè)時(shí)候就需要加載自己寫(xiě)的類(lèi)了.

復(fù)制代碼 代碼如下:www.ghpqjb.com

pc_base::load_app_class('你的模塊名','',0);

其余的操作可以參照系統(tǒng)的attachment模塊下的attachments控制器里面的swfupload方法來(lái)修改.

至此.我便完成了我的目的.在不改變系統(tǒng)文件目錄的基礎(chǔ)上.完成我自己想要的文件上傳功能.

分享:基于php權(quán)限分配的實(shí)現(xiàn)代碼
本篇文章介紹了,基于php權(quán)限分配的實(shí)現(xiàn)代碼。需要的朋友參考下

來(lái)源:模板無(wú)憂(yōu)//所屬分類(lèi):PHP教程/更新時(shí)間:2013-04-29
相關(guān)PHP教程
精品一区二区免费视频| 亚洲成人黄色片| 久久不见久久见国语| 国产亚洲一二三区| 中文字幕欧美在线| 免费的av在线| 亚洲av中文无码乱人伦在线视色| 成人亚洲一区二区| 亚洲精品免费在线| 日韩美女在线播放| 最新av免费在线观看| 日本激情视频网站| 久久国产剧场电影| 亚洲高清一区二| 日韩色妇久久av| 免看一级a毛片一片成人不卡| 天堂网av成人| 又紧又大又爽精品一区二区| 青草成人免费视频| 久久出品必属精品| 亚洲不卡系列| 9l国产精品久久久久麻豆| 中文精品99久久国产香蕉| 欧洲精品一区二区三区久久| 在线观看免费视频一区| 蜜桃av综合| 欧美xxxx老人做受| 亚洲自拍的二区三区| 久久99精品波多结衣一区| 91精品福利| 在线观看亚洲a| 国产日韩一区二区| 亚洲色图综合区| 色135综合网| 一本久久a久久免费精品不卡| 91久久极品少妇xxxxⅹ软件| 免费91在线观看| 国产探花一区| 精品色蜜蜜精品视频在线观看| 亚洲一区二区三区xxx视频| 免费看裸体网站| 色婷婷av一区二区三区丝袜美腿| 亚洲免费看黄网站| 成人黄色影片在线| 亚洲图片第一页| 亚洲素人在线| 欧美日韩国产中文精品字幕自在自线| 亚洲综合成人婷婷小说| 国产人与禽zoz0性伦| 青青草成人影院| 91福利视频在线| 精品1区2区| 国产性xxxx高清| 亚洲视频福利| 精品福利视频一区二区三区| 久久亚洲国产成人精品无码区| 99在线观看免费| 国产资源精品在线观看| 久久精品男人天堂| 红桃视频 国产| 国产精品一级在线观看| 亚洲少妇30p| 96sao精品视频在线观看| 国产成人av免费在线观看| 国产精品99一区二区三| 欧美日韩国产免费一区二区| 中文字幕日韩一区二区三区不卡| 中文字幕乱码视频| 精品综合免费视频观看| 欧美成人激情视频| 日本精品一二三区| 欧美变态网站| 在线观看日韩国产| 伊人情人网综合| www.久久成人| 91最新地址在线播放| 日韩美女视频免费看| 一级肉体全黄裸片| 亚洲影视一区| 亚洲二区在线播放视频| 91九色在线观看视频| 色豆豆成人网| 日韩理论片网站| 国产精品一区免费观看| 伊人中文字幕在线观看| 久久国产精品区| 欧美日本在线视频中文字字幕| 91精品又粗又猛又爽| 少妇精品久久久一区二区| 欧美日韩国产高清一区二区| 国产 欧美 日本| 韩日成人影院| 亚洲视频图片小说| 鲁丝一区二区三区免费| 在线观看av大片| 成人黄色在线网站| 国产精品久久99久久| 18岁成人毛片| 日日摸夜夜添夜夜添国产精品| 久久精品国产成人精品| 艳妇乳肉豪妇荡乳xxx| 久久国产影院| 亚洲成av人片在线观看香蕉| 91香蕉视频污版| aaa国产精品视频| 色哟哟一区二区| 国产激情片在线观看| 欧美1级2级| 亚洲夂夂婷婷色拍ww47| 日韩电影免费观看高清完整| www.xxx国产| 中文一区一区三区高中清不卡| 国产精品二区二区三区| 亚洲中文字幕在线观看| 久久久噜噜噜久久人人看| 91日本在线视频| 午夜精品免费观看| 99免费精品视频| 91精品视频在线看| 无码人妻熟妇av又粗又大| 高清在线成人网| 国产美女精彩久久| 国产免费观看av| 国产高清一区日本| 国产欧美 在线欧美| 国产原创视频在线| 成人午夜伦理影院| 91系列在线观看| 午夜精品免费观看| 91麻豆国产在线观看| 国产一区二区中文字幕免费看| 国产乱人乱偷精品视频a人人澡| 久久久精品2019中文字幕之3| 成人女人免费毛片| 精品国产av一区二区三区| 国产精品国模大尺度视频| 区一区二区三区中文字幕| 亚洲人在线观看视频| 亚洲国产精品久久久久秋霞影院 | 久久精品国产久精国产| 欧日韩不卡在线视频| 日本道在线观看| 成人精品小蝌蚪| 99国产在线视频| 国产激情无套内精对白视频| 中文字幕一区在线| 在线看无码的免费网站| 欧美电影在线观看网站| 欧美三级韩国三级日本一级| 91色国产在线| 波多野结衣一区| 中文日韩在线视频| 妖精视频在线观看免费| 免费在线观看成人| 91精品国产综合久久男男| 在线观看国产精品入口男同| 国产精品久久久久永久免费观看 | 亚洲av无码乱码国产精品fc2| 国产日产亚洲精品系列| 日韩电影天堂视频一区二区| 成人国产精品一区二区免费麻豆 | 亚洲国产精品va在看黑人| aaa黄色大片| 亚洲一区区二区| 欧美中文在线观看国产| 亚洲av无码精品一区二区| 国产精品无人区| 一级日韩一区在线观看| 精品国产不卡一区二区| 日韩免费电影一区| 国产精品无码专区| 日韩在线一二三区| 成人欧美一区二区三区黑人| 国产精品一二三四五区| 一区二区三区产品免费精品久久75| 成人在线国产视频| 亚洲妇女av| 伊人久久大香线蕉av一区二区| avhd101老司机| 国产一区欧美日韩| 国产伦精品一区| 3d欧美精品动漫xxxx无尽| 欧美视频在线不卡| 国产无套精品一区二区三区| 国产精品婷婷| 国产欧美日韩中文字幕在线| www.狠狠干| 色伊人久久综合中文字幕| 亚洲精品久久久中文字幕| 婷婷综合五月| 81精品国产乱码久久久久久| 中文字幕精品一区二区精| 亚洲午夜精品网| av视屏在线播放| 欧美三级第一页| 国产成人啪精品视频免费网| 国产农村老头老太视频| 欧美丝袜美女中出在线| 国产精品自在自线| 国产模特精品视频久久久久| 国产欧美精品一区二区| 少妇精品视频一区二区| 欧美精品一二三区| www.88av| 国产电影精品久久禁18| 午夜精品一区二区三区在线观看| 国产成人夜色高潮福利影视 | 国产黄色av片| 91久久精品一区二区三| 国产吃瓜黑料一区二区| 青青草国产成人99久久| 久久99精品久久久久子伦| 国产美女精品视频免费播放软件| 日韩av在线免费| 免费一级片在线观看| 国产精品乱人伦中文| 免费看又黄又无码的网站| 久久久久久美女精品 | xxxx日本黄色| 99re视频精品| 91网站在线观看免费| 婷婷激情综合| 国产欧美一区二区| 成人久久网站| 亚洲深夜福利在线| 免费看日韩毛片| 亚洲一区在线观看免费 | 国产高清免费观看| 欧美色综合网站| 少妇大叫太粗太大爽一区二区| 懂色中文一区二区在线播放| 一区二区在线观看网站| 国产一区不卡| 57pao精品| 四虎永久在线观看| 亚洲国产三级网| 日本三级免费看| 亚洲高清免费在线| 2018国产精品| 顶级嫩模精品视频在线看| 日本久久高清视频| 66视频精品| 91在线中文字幕| 久久伦理中文字幕| 欧美成人精品在线视频| 国产精品毛片一区视频播| 欧美美女直播网站| 国产又粗又猛又爽又黄的视频小说| 中文在线免费一区三区高中清不卡| 欧美精品无码一区二区三区| 久久精品系列| 日本精品二区| 欧美综合视频| 国产欧美一区二区三区在线 | 精品在线99| 青青草国产精品一区二区| 在线成人av观看| 国产亚洲视频中文字幕视频| 91porny九色| 欧美图片一区二区三区| 任我爽在线视频| 亚洲精品videosex极品| 久久久久国产免费| 91在线你懂得| 精品少妇无遮挡毛片| 精品一区二区免费| 草草草视频在线观看| 亚洲视频福利| 欧美精品欧美精品系列c| 俺要去色综合狠狠| 91夜夜揉人人捏人人添红杏| aaa国产精品视频| 欧洲一区二区视频| 日本成人一区二区| 色综合久久久888| 在线观看xxx| 中文综合在线观看| а√中文在线资源库| 亚洲精品国精品久久99热一| 波多野结衣一区二区三区在线| 91精品啪在线观看国产60岁| 久久久久噜噜噜亚洲熟女综合| 精品福利免费观看| 91精品国自产在线| 一区二区久久久久久| 免费看污片网站| 亚洲日本成人在线观看| 国产麻豆剧传媒精品国产av| 中文子幕无线码一区tr| 91精品人妻一区二区三区四区| 久久一区二区三区国产精品| 五月天中文字幕在线| 成人福利电影精品一区二区在线观看| 37pao成人国产永久免费视频| 久久国产乱子精品免费女| 妺妺窝人体色777777| 七七婷婷婷婷精品国产| 日韩一区二区高清视频| 日韩 欧美一区二区三区| 97超碰国产精品| 理论电影国产精品| 精品无码国模私拍视频| 精品一区中文字幕| 777久久久精品一区二区三区| 黄色日韩网站视频| 免费国产成人av| 成人黄色一级视频| 五月天av在线播放| 久久综合999| 亚洲图片欧美另类| 亚洲欧美在线aaa| 亚洲黄色小说视频| 五月综合激情婷婷六月色窝| 精品在线观看一区| 色婷婷国产精品久久包臀| 国产真人真事毛片| 9191久久久久久久久久久| www.伊人久久| 亚洲成人a**站| 99热这里只有精品5| 最近中文字幕2019免费| 美女福利一区二区| 国模精品视频一区二区三区| 麻豆国产一区二区三区四区| 国产精品白嫩美女在线观看| 欧美韩一区二区| 国产高清精品一区| 国产精品多人| 中国女人做爰视频| 极品美女销魂一区二区三区免费| 爱情岛论坛成人| 久久免费视频一区| 无码人妻精品一区二区三区温州| 亚洲一区二三区| 九九视频免费在线观看| 日韩一区二区在线观看| 91 中文字幕| 精品国偷自产在线视频| 欧美黄色a视频| 国产精品一区二区久久久久| 日本a口亚洲| 亚洲国产日韩综合一区| 青椒成人免费视频| 一级片视频免费观看| 国产精品美女久久福利网站| 在线观看免费黄色网址| 欧美精品久久99| 国产精品久久久久久免费| 久久久999精品免费| 91嫩草国产线观看亚洲一区二区 | 欧美精品一区二区高清在线观看| 国产美女自慰在线观看| 欧美成人精品一区| 国产精品久av福利在线观看| 国产欧美一区二区三区另类精品| 影音先锋一区| 乱妇乱女熟妇熟女网站| 日本一区二区三区在线不卡| 国产午夜精品福利视频| 91精选在线观看| 亚洲第一天堂在线观看| 午夜精品福利视频| 亚洲香蕉视频| 神马一区二区影院| 国产在线视频不卡二| 激情小说欧美色图| 欧美日韩性视频| 国产精品欧美综合| 久久精品中文字幕| 99精品国产高清一区二区麻豆| 国产三级精品在线不卡| 乱人伦精品视频在线观看| 欧美婷婷精品激情| 亚洲精品伦理在线| 成人午夜视频精品一区| 亚洲性xxxx| 玖玖精品一区| 久精品国产欧美| 蜜桃av噜噜一区| 亚洲美女高潮久久久| 91久久精品网| 午夜精品久久久久久久第一页按摩| 8050国产精品久久久久久| 成人免费av| 精品少妇人欧美激情在线观看| 久久久久久麻豆| 2018天天弄| 亚洲欧美日韩成人| 97久久中文字幕| 九九九九九九精品| 国产一区视频网站| 黄瓜视频污在线观看| 日韩一区二区精品| 亚洲成人短视频| 国产精品xxx在线观看www| 蜜臀精品久久久久久蜜臀| 亚洲精品久久一区二区三区777| 欧美私人免费视频| 三级网站在线看| 91综合免费在线|