如何在PHP中將文件上傳到服務器?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
一、實例說明
上傳圖片到服務器,是程序開發過程中必不可少的一個功能。它不但可以達到圖片共享的目的,而且可以提高網站的訪問量,豐富網站的內容。在本實例中,講解如何通過POST方式實現多圖片上傳。
二、關鍵技術
多文件上傳的關鍵是如何定義上傳文件元素的名稱及如何判斷上傳文件的數量。在本實例中,以數組的形式定義上傳文件的名稱(上傳文件的名稱是“files[]”)。為了達到可以上傳任意數量圖片(4個圖片以內)的目的,在對上傳文件進行處理的過程中應用array_filter()函數和回調函數去除數組中的空元素。
array_filter()函數,用回調函數過濾數組中的單元,語法如下:
array array_filter(array input[,callback callback])
array_filter()函數依次將input數組中的每個值傳遞到callback函數。如果callback函數返回TRUE,則input數組的當前值會被包含在返回的結果數組中,并且數組的鍵名保留不變。
說明:在回調函數中不要對數組進行修改操作,例如,增加或者刪除數組中的元素,如果一旦數組改變,那么此函數的運用也就沒有意義了。如果沒有提供callback()函數,array_filter()將刪除input中所有等值為FALSE的元素。
本實例中定義的回調函數是check(),用于驗證數組中的元素值是否為空,其語法如下:
function check($var){//驗證數組的返回值是否為空 return($var!="");}
說明:通過POST方法實現多圖片上傳,在創建form表單時,必須指定enctype="multipart/form-data"屬性。如果要通過隱藏域MAX_FILE_SIZE的值對上傳文件的大小進行控制,那么必須將隱藏放置在上傳文件的文件域之前,否則是不會起作用的。
三、設計過程
(1)創建index.php文件。添加表單,設置文件域、提交按鈕,使用POST方法,設置enctype="multipart/form-data",將數據提交到index_ok.php頁,完成多個文件的上傳操作,其關鍵代碼如下:
<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">內容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">內容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文件中,連接數據庫,讀取數據庫中存儲的數據,實現上傳文件的分頁輸出。代碼請參考光盤中的相關內容。
(3)創建index.php文件獲取表單中提交的數據,將多個文件存儲到服務器中,將文件的名稱和存儲路徑存儲到數據庫中,其代碼如下:
<?php header("Content-type:text/html;charset=UTF-8"); //設置文件編碼格式 include"conn/conn.php"; //包含數據庫鏈接文件 if($_POST[files]!=""){ if(! is_dir("./upfile")){ mkdir("./upfile");//創建上傳文件存儲文件夾 } $data=date("Y-m-d H:m:s");//定義時間 function check($var){ //驗證數組的返回值是否為空 return($var!="");//如果不為空則返回數組元素 } $files=array_filter($_POST["files"],"check");//去除數組中空值 $array=array_filter($_FILES["picture"]["name"],"check"); //去除數組中空值 foreach=($aarray as $key=>value){ //循環讀取數組中數據 $path='upfile/'.time().$key.strtolower(strstr($value,".")); //定義上傳文件存儲位置 move_uploaded_file($_FILES["picture"]["tmp_name"][$key],$path);//執行上傳操作 $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>"; } ?>
關于如何在PHP中將文件上傳到服務器問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。