久久机这里只有精品,国产69精品一区二区亚洲孕妇,91精品国产综合久久婷婷香蕉,午夜久久久久久电影

最新活動:電腦PC端+手機端+微網(wǎng)站+自適應(yīng)網(wǎng)頁多模板選擇-建站388元起價!!!
當(dāng)前位置:主頁 > 網(wǎng)站建設(shè) > 織夢文件上傳功能分析教程,DEDE技術(shù)

織夢文件上傳功能分析教程,DEDE技術(shù)

時間:2023-07-20 11:07:20 閱讀: 文章分類: 網(wǎng)站建設(shè) 作者: 織夢編輯員

導(dǎo)讀:DEDE技術(shù)DEDE技術(shù)織夢系統(tǒng)里面的上傳功能比較多,例如有友情連接里的logo上傳、模塊管理里面的上傳模塊和模塊打包、發(fā)布新圖集里面的上傳圖片集、發(fā)布新軟件里的上傳本地文件、附件管理dede會員中心模板織夢cms模板。

dede會員中心模板織夢cms模板  織夢系統(tǒng)里面的上傳功能比較多,例如有友情連接里的logo上傳、模塊管理里面的上傳模塊和模塊打包、發(fā)布新圖集里面的上傳圖片集、發(fā)布新軟件里的上傳本地文件、附件管理里面的上傳新文件、文件式管理器里面的文件上傳、織夢會員中心里面的軟件上傳和縮略圖等等,在織夢里面的文件上傳功能到處都有應(yīng)用。   我們分析三個有代表性的,一個是logo上傳,這個是一般的應(yīng)用,但相對復(fù)雜一點;另一個是附件管理時面的上傳新文件,這二個一個共同特點是上傳的文件都要保存到數(shù)據(jù)庫里面,第三個是文件式管理器里面的文件上傳功能,這個與我們之前的教程“php文件(單文件和多文件)上傳詳解教程”講的一樣,都是簡單的上傳文件,沒有用到數(shù)據(jù)庫知識,我們就以這三個為例子,其它的上傳跟這三個可以說大同小異。   要分析這三個文件讓傳功能,需要對織夢文件上傳處理方式,織夢與我們在php文件(單文件和多文件)上傳詳解教程里看到的文件上傳是很不一樣的,畢竟,織夢系統(tǒng)是一比較成熟的cms系統(tǒng),織夢處理文件上傳,不像我們看的教程一樣寫一個文件就可以了,因為,織夢系統(tǒng)里面用到的文件上傳很多,不光是織夢系統(tǒng),其它系統(tǒng)一定會用到文件上傳,只要是網(wǎng)站就會用到文件上傳功能。   織夢是如何處理文件上傳的呢?要了解這個我們就要分析一下文件上傳的共同點,然后,把這公共部分放在一個文件,然后,其它上傳文件就直接引用這個文件就可以了,這樣其它每個上傳功能如logo上傳,圖片集上傳,軟件上傳等各自寫適合自己的代碼,然后,再引用公共部分即可。這種思想正是函數(shù)產(chǎn)生的思想,什么是函數(shù)簡單而言之,就是把公共功能寫成一段代碼,其它,需要這個功能時直接調(diào)用,而本篇講的文件調(diào)用也正是如此。   織夢文件上傳公共部織夢模板分在根目錄(http://www.dedebase.com這就是根目錄,如果你在本地的話根目錄就是http://localhost)/include/uploadsafe.inc.php,對就在uploadsafe.inc.php文件里面,這個引用文件功能是:“轉(zhuǎn)換上傳的文件相關(guān)的變量及安全處理、并引用前臺通用的上傳函數(shù)。”。   織夢是如何把這個文件配置到要引用它的文件里的呢?首頁,要在/include/common.inc.php里面,寫一句如下代碼: if($_FILES) {     require_once(DEDEINC.'/uploadsafe.inc.php'); }   這段代碼的意思就是,當(dāng)要上傳文件時,就引用文件uploadsafe.inc.php,如果我們打開例如logo上傳文件friendlink.add.php你會發(fā)現(xiàn),沒有這個uploadsafe.inc.php文件,是的,織夢還配置了一個在根目錄/dede/里面的config.php文件,這個是后臺dede網(wǎng)站模板根目錄/dede/所有php文件共有的,如果你隨便打開個文件,你會發(fā)現(xiàn)都引用了這個文件,這個config.php不僅僅包括了上傳文件,還包括了數(shù)據(jù)庫連接等很多織夢程序所必備的內(nèi)容。為什么這樣包涵來包涵去?還是為了開發(fā)方便,試想如果我們把這些文件里的東西都寫進(jìn)friendlink.add.php里面,那文件得多大啊,更重要的是重復(fù)寫相同的內(nèi)容,不利于開發(fā)。   我們就拿logo上傳為例子這些文件是這樣相互包括的:friendlink.add.php 引入config.php,config.php引入common.inc.php,common.inc.php引入uploadsafe.inc.php。這樣無論friendlink.add.php如何改變都不影響后面的文件,有利于開發(fā)。   現(xiàn)在我們就要分析一uploadsafe.inc.php是如何轉(zhuǎn)換上傳的文件變量即$_FILES及安全設(shè)置的。   打開uploadsafe.inc.php文件,找到foreach($_FILES as $_key=>$_value)這句,這句前面是設(shè)置強制哪些文件類型可以上傳,并設(shè)置了一個數(shù)組$keyarr = array('name', 'type', 'tmp_name', 'size');數(shù)組$keyarr值正是$_FILES的鍵,這是為后面進(jìn)行數(shù)組遍歷作準(zhǔn)備。還對是不是通過編輯器上傳作了判斷。   在foreach($_FILES as $_key=>$_value)后面是重點了,通過foreach($_FILES as $_key=>$_value)我們可以得到$_key,這個$_key正是我們表單里面的類型為file的name屬性值,這一點非常重要。這句foreach($_FILES as $_key=>$_value)代碼就是為了得到這個$_key。為了進(jìn)一步說明這個$_key我們把$_FILES數(shù)組存儲的內(nèi)容分析一下,這里以單個文件上傳為例子,多個文件一樣。$_FILES存儲的內(nèi)容如下。   Array (     [upmyfile] => Array         (             [name] => 1440x900wolf.jpg             [type] => image/jpeg             [tmp_name] => D:\APMServ5.2.6\tmp\uploadtemp\php6B1.tmp             [error] => 0             [size] => 160666         ) )   這句代碼foreach($_FILES as $_key=>$_value),正是為了獲得這個$_key就是$_FILES里面的upmyfile。接下來我們就要得到name,type,tmp_name,error,size了,我們完全可以再遍歷一下$_value,因為$_value又是一個數(shù)組,包括這些內(nèi)容,但是大家想一下,這只是單文件上傳,如果是一個多文件上傳,是不是比較重雜?是的,織夢想到了一好辦法就是先定義一個$Keyarr數(shù)組,直接從這個數(shù)組里面獲取name,type,tmp_name,error,size,既簡單,又方快速。   代碼foreach($keyarr as $k)這句正是為了獲取name,type,tmp_name,error,size內(nèi)容。   接下來這句代碼$$_key = $_FILES[$_key]['tmp_name'];是這個uploadsafe.inc.php里面的重中之重,這個代碼的等價于$upmyfile = D:\APMServ5.2.6\tmp\uploadtemp\php6B1.tmp;以后,我們在引用uploadsafe.inc.php這個文件的文件里看到類似$upmyfile就等于是$_FILES[$_key]['tmp_name']即上傳文件臨時文件名,同理   ${$_key.'_name'} = $_FILES[$_key]['name'] 等價于 $upmyfile_name = $_FILES[$_key]['name'] = 1440x900wolf.jpg。   ${$_key.'_type'} = $_FILES[$_key]['type'] 等價于 $upmyfile_type = $_FILES[$_key]['type'] = image/jpeg。   ${$_key.'_size'} = $_FILES[$_key]['size'] 等價于 $upmyfile_size = $_FILES[$_key]['size'] = 160666。   之所以通過以上方式處理,就是為了在引用uploadsafe.inc.php文件的文件里面,不出現(xiàn)類似$_FILES[$_key]['size']這樣長的代碼。   后面的代碼就是對文件上傳的文件名是不是空,是不是我們允許的文件后綴,文件名是不是少個點進(jìn)行判斷;對文件大小是不是0,如果是我們通過系統(tǒng)函數(shù)filesize()獲取,如果更加詳細(xì)的判斷還要判斷一下,用戶上傳的內(nèi)容是不是超出了我們設(shè)置的大小,是不是超出了服務(wù)器設(shè)置的大小,但織夢沒有判斷在上一個教程“php文件(單文件和多文件)上傳詳解教程”我們已經(jīng)作了詳細(xì)判斷。   最后,對上傳的文件類型進(jìn)行判斷,強制使用我們設(shè)置的文件類型。   總結(jié):uploadsafe.inc.php用到的系統(tǒng)函數(shù)有是否存在函數(shù)etmpty(),通過正則來判斷是否匹配preg_match(),檢查數(shù)組中是否存在某個值in_array(),將字符串轉(zhuǎn)化為小寫strtolower(),去除字符串首尾處的空白字符(或者其他字符)trim(),preg_replace — 執(zhí)行一個正則表達(dá)式的搜索和替換等函數(shù),現(xiàn)在我們對uploadsafe.inc.php這個文件已經(jīng)分析完了。   一、logo文件上傳如下圖所示。

關(guān)鍵詞標(biāo)簽: 標(biāo)簽 織夢 文件上傳

聲明: 本文由我的SEOUC技術(shù)文章主頁發(fā)布于:2023-07-20 ,文章織夢文件上傳功能分析教程,DEDE技術(shù)主要講述文件上傳,標(biāo)簽,織夢網(wǎng)站建設(shè)源碼以及服務(wù)器配置搭建相關(guān)技術(shù)文章。轉(zhuǎn)載請保留鏈接: http://www.bifwcx.com/article/web_31649.html

我的IDC 網(wǎng)站建設(shè)技術(shù)SEOUC.COM
專注網(wǎng)站建設(shè),SEO優(yōu)化,小程序設(shè)計制作搭建開發(fā)定制網(wǎng)站等,數(shù)千家網(wǎng)站定制開發(fā)案例,網(wǎng)站推廣技術(shù)服務(wù)。
  • 5000+合作客服
  • 8年從業(yè)經(jīng)驗
  • 150+覆蓋行業(yè)
  • 最新熱門源碼技術(shù)文章

    主站蜘蛛池模板: 嘉善县| 临颍县| 修水县| 射洪县| 潞西市| 松潘县| 蓝田县| 思南县| 辽阳县| 启东市| 仲巴县| 兰西县| 宣汉县| 慈溪市| 望城县| 康乐县| 额尔古纳市| 新化县| 黄陵县| 韩城市| 焉耆| 宝山区| 嘉善县| 临湘市| 宜章县| 泸水县| 合江县| 潮州市| 余干县| 文昌市| 舞阳县| 武汉市| 思茅市| 商丘市| 兴化市| 壤塘县| 海伦市| 泾源县| 成武县| 平阳县| 广安市|