php將檔案上傳

#php 
#檔案上傳功能

首先從html 的form表單開始,選擇檔案上傳。
接著透過php將上傳的檔案從暫時存放的空間轉移到伺服器端的資料夾。

    <form method="post" action="upload.php" enctype="multipart/form-data">
    <!-- value的值代表  -->
    <input type="hidden" name="MAX_FILE_SIZE" value="1048576">
    <input type="file" name="myfile">
    <input type="submit">
    </form>

以上是傳輸檔案的html 中的form 表單(表單上傳介面)
1.其中enctype代表將資料發送到伺服器時,瀏覽器對表單數據所使用的編碼型別,然後我們將其設定為"multipart/form-data",
2.<input type="hidden" name="MAX_FILE_SIZE" value="1048576">這個隱藏欄位中,設定name為"MAX_FILE_SIZE",
可見得這個隱藏欄位控制檔案上傳的大小,value代表能上船的最大值,1MB =1024*1024 =1048576 ,因此若我要控制此檔案
若超過1M就不能上傳,我便填寫value="1048576"  *此隱藏來為必須放在檔案欄位前面

接著是php處理檔案。
可以使用$_FILES[][]來處理檔案。第一個索引值代表的是表單中<input type="file">的name屬性值,第二個索引值則是檔案性質。
有一些定義的語法。
例如:
$_FILES["myFile"]["name"]: 檔名
$_FILES["myFile"]["type"]: 檔案類型(text/plain、image/jpeg)
$_FILES["myFile"]["size"]: 大小
$_FILES["myFile"]["tmp_name"]: 在系統當中暫存的位置與名稱

後端處理,使用
move_uploaded_file($_FILES["myfile"]["tmp_name"],$upload_file)
語法
這行代表的是將檔案從暫存的位置轉移到指定的資料夾,並變更檔案名稱。
這個函式的第一個值要填的是要移動的檔案也就是$_FILES["myfile"]["tmp_name"],
而第二個值要填的是要移動到的地方跟名字,也就是說$upload_file是檔案的路徑+名字
譬如:

$upload_dir= "C:/xampp/htdocs/final/img/";
$upload_file=$upload_dir.$_FILES["myFile"]["name"];

當然就資安來說,還有很多需要考慮的地方。檔名、檔案類型的部分可以用正則表達式、白名單等來過濾。
另外,檔案上傳功能再搭配上資料庫,紀錄檔案的路徑、名字等,要用的時候便可以再用資料庫中紀錄的路徑來列出
已存放到資料夾的檔案。

留言