《PHP實(shí)例:PHP多個文件上傳到服務(wù)器實(shí)例》要點(diǎn):
本文介紹了PHP實(shí)例:PHP多個文件上傳到服務(wù)器實(shí)例,希望對您有用。如果有疑問,可以聯(lián)系我們。
本文實(shí)例講述了PHP多個文件上傳到服務(wù)器的實(shí)現(xiàn)辦法.對于多個文件同時上傳到服務(wù)器的情況來說,我們需要使用到數(shù)組形式的參數(shù)傳遞及數(shù)據(jù)的遍歷上傳即可,具體的操作步驟分析如下:PHP應(yīng)用
一、實(shí)例說明PHP應(yīng)用
上傳圖片到服務(wù)器,是程序開發(fā)過程中必不可少的一個功能.它不但可以達(dá)到圖片共享的目的,而且可以提高網(wǎng)站的拜訪量,豐富網(wǎng)站的內(nèi)容.在本實(shí)例中,講解如何通過POST方式實(shí)現(xiàn)多圖片上傳.PHP應(yīng)用
二、關(guān)鍵技術(shù)PHP應(yīng)用
多文件上傳的關(guān)鍵是如何定義上傳文件元素的名稱及如何判斷上傳文件的數(shù)量.在本實(shí)例中,以數(shù)組的形式定義上傳文件的名稱(上傳文件的名稱是“files[]”).為了達(dá)到可以上傳任意數(shù)量圖片(4個圖片以內(nèi))的目的,在對上傳文件進(jìn)行處理的過程中應(yīng)用array_filter()函數(shù)和回調(diào)函數(shù)去除數(shù)組中的空元素.PHP應(yīng)用
array_filter()函數(shù),用回調(diào)函數(shù)過濾數(shù)組中的單元,語法如下:
PHP應(yīng)用
代碼如下:
array array_filter(array input[,callback callback])
array_filter()函數(shù)依次將input數(shù)組中的每個值傳遞到callback函數(shù).如果callback函數(shù)返回TRUE,則input數(shù)組的當(dāng)前值會被包含在返回的結(jié)果數(shù)組中,并且數(shù)組的鍵名保留不變.
說明:在回調(diào)函數(shù)中不要對數(shù)組進(jìn)行修改操作,例如,增加或者刪除數(shù)組中的元素,如果一旦數(shù)組改變,那么此函數(shù)的運(yùn)用也就沒有意義了.如果沒有提供callback()函數(shù),array_filter()將刪除input中所有等值為FALSE的元素.
本實(shí)例中定義的回調(diào)函數(shù)是check(),用于驗(yàn)證數(shù)組中的元素值是否為空,其語法如下:PHP應(yīng)用
代碼如下:
function check($var){//驗(yàn)證數(shù)組的返回值是否為空
return($var!="");
}
說明:通過POST方法實(shí)現(xiàn)多圖片上傳,在創(chuàng)建form表單時,必須指定enctype="multipart/form-data"屬性.如果要通過暗藏域MAX_FILE_SIZE的值對上傳文件的大小進(jìn)行控制,那么必須將暗藏放置在上傳文件的文件域之前,否則是不會起作用的.
三、設(shè)計(jì)過程PHP應(yīng)用
(1)創(chuàng)建index.php文件.添加表單,設(shè)置文件域、提交按鈕,使用POST辦法,設(shè)置enctype="multipart/form-data",將數(shù)據(jù)提交到index_ok.php頁,完成多個文件的上傳操作,其關(guān)鍵代碼如下:PHP應(yīng)用
代碼如下:
<table width="750"border="0"cellspacing="0"cellpadding="0">
<form action="index_ok.html"method="post"enctype="multipart/form-data"name="form1">
?<tr>
?<td width="100"height="25"align="right"class="STYLE1">內(nèi)容1:</td>
?<td width="150"align="center"><input name="files[]"type="text"id="files[]"size="15"></td>
?<td align="left"><input name="picture[]"type="file"id="pcture[]"size>="30"></td>
?</tr>
?<tr>
?<td height="25"align="right"class="STYLE1">內(nèi)容2:</td>
?<td width="center"><input name="files[]"type="text"id="files[]"size="15"></td>
?<td align="left"><input name="picture[]"type="file"id="pcture[]"size>="30"></td>
?</tr>
?<tr>
<td colspan="3"align="center">
?<input type="image"name="imageField"src="images/bg_09.jpg">????
?<input type="image"name="imgeField2"src="images/bg_11.jpg"></td>
</tr>
</form>
?</table>
(2)在index.php文件中,連接數(shù)據(jù)庫,讀取數(shù)據(jù)庫中存儲的數(shù)據(jù),實(shí)現(xiàn)上傳文件的分頁輸出.代碼請參考光盤中的相關(guān)內(nèi)容.
(3)創(chuàng)建index.php文件獲取表單中提交的數(shù)據(jù),將多個文件存儲到服務(wù)器中,將文件的名稱和存儲路徑存儲到數(shù)據(jù)庫中,其代碼如下:PHP應(yīng)用
代碼如下:
<?php
header("Content-type:text/html;charset=UTF-8"); //設(shè)置文件編碼格式
include"conn/conn.php"; //包含數(shù)據(jù)庫鏈接文件
if($_POST[files]!=""){
if(! is_dir("./upfile")){
mkdir("./upfile");//創(chuàng)建上傳文件存儲文件夾
}
$data=date("Y-m-d H:m:s");//定義時間
function check($var){ //驗(yàn)證數(shù)組的返回值是否為空
?return($var!="");//如果不為空則返回?cái)?shù)組元素
}
$files=array_filter($_POST["files"],"check");//去除數(shù)組中空值
$array=array_filter($_FILES["picture"]["name"],"check"); //去除數(shù)組中空值
foreach=($aarray as $key=>value){ //循環(huán)讀取數(shù)組中數(shù)據(jù)
?$path='upfile/'.time().$key.strtolower(strstr($value,".")); //定義上傳文件存儲位置
?move_uploaded_file($_FILES["picture"]["tmp_name"][$key],$path);//執(zhí)行上傳操作
?$query="insert into tb_up_file(file_test,data,file_name)values('$path','$data''$files[$key]')";
?$result=mysql_query($query);
}
echo"<script>
alert('圖片上傳成功');window.location.href='index.html';</script>";
?}
??>
四、技巧補(bǔ)充PHP應(yīng)用
通過偽靜態(tài)技術(shù)暗藏PHP文件后綴.
首先,修改Apache服務(wù)器的配置文件httpd.conf.打開httpd.conf文件,定位到如下位置:PHP應(yīng)用
代碼如下:
#LoadModule rewrite_module modules/mod_rewrite.so
將該項(xiàng)前面的“#”去掉后啟動該項(xiàng).
然后,查找httpd.conf文件,找到其中的AllowOverride項(xiàng),將它的值都修改為All.保存并重新啟動Apache服務(wù)器,使修改生效.
最后,在實(shí)例根目錄下創(chuàng)建.htaccess文件,實(shí)現(xiàn)對PHP文件后綴的暗藏操作..htaccess文件的代碼如下:
代碼如下:
RewriteEngine On#啟動項(xiàng)
RewriteRule^index.html$ index.php
RewriteRule^ndex_ok.html$ index_ok.php
RewriteRule^index-([0-9]+)-([0-9]+)-([0-9]+)\.html$ index.php?vv=$1&ljjl=$2&page=$3[L]
通過正則表達(dá)式對文件的后綴和傳遞的參數(shù)進(jìn)行匹配,完成對PHP文件后綴的暗藏操作.PHP應(yīng)用
希望本文所述對大家的PHP程序設(shè)計(jì)有所贊助.PHP應(yīng)用
維易PHP培訓(xùn)學(xué)院每天發(fā)布《PHP實(shí)例:PHP多個文件上傳到服務(wù)器實(shí)例》等實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/14402.html