主要結構:
1. 上傳檔案的 html
2. 處理上傳檔案的 php (此範例將其命名為 uploadfile.php)
特別注意:
1. 需建立一個儲存上傳檔案的資料夾 (此範例將其命名為 upload)
2. 表單 form 一定要加上 enctype="multipart/form-data" 代表要上傳檔案
介紹一下 PHP $FILES 陣列的用法:
$_FILES["file"]["name"]:上傳檔案的原始名稱。
$_FILES["file"]["type"]:上傳的檔案類型。
$_FILES["file"]["size"]:上傳的檔案原始大小。
$_FILES["file"]["tmp_name"]:上傳檔案後的暫存資料夾位置。
$_FILES["file"]["error"]:如果檔案上傳有錯誤,可以顯示錯誤代碼。
1. 首先,須有一個上傳檔案的 html 檔
<html>
<body>
<form action="uploadfile.php" method="post" enctype="multipart/form-data">
選擇檔案:<input type="file" name="myfile" id="myfile" /><br />
<input type="submit" name="submit" value="上傳檔案" />
</form>
</body>
</html>
2. 在資料夾內建立一個儲存上傳檔案的資料夾,此範例將其命名為 upload
3. 接著,撰寫一個處理上傳檔案的 php 檔 (此範例將其命名為 uploadfile.php)
使用 move_uploaded_file 將上傳的檔案搬移到資料夾中,判斷式的部分可自行斟酌是否使用
<?php
if ($_FILES["myfile"]["error"] > 0){
echo "Error: " . $_FILES["myfile"]["error"];
}else{
echo "檔案名稱: " . $_FILES["myfile"]["name"]."<br/>";
echo "檔案類型: " . $_FILES["myfile"]["type"]."<br/>";
echo "檔案大小: " . ($_FILES["myfile"]["size"] / 1024)." Kb<br />";
echo "暫存名稱: " . $_FILES["myfile"]["tmp_name"];
if (file_exists("upload/" . $_FILES["myfile"]["name"])){
echo "檔案已經存在,請勿重覆上傳相同檔案";
}else{
//在檔名不會有中文的情況下,可以直接 move_uploaded_file
//move_uploaded_file($_FILES["myfile"]["tmp_name"],"upload/".$_FILES["myfile"]["name"]);
//在無法判斷檔名是否有中文的情況下,建議使用此方法(iconv( 原來的編碼 , 轉換的編碼 , 轉換的字串 ))避免掉中文檔名無法上傳的問題
$target_path = "upload/"; //指定上傳資料夾
$target_path .= $_FILES['myfile']['name']; //上傳檔案名稱
if(move_uploaded_file($_FILES['myfile']['tmp_name'],
iconv("UTF-8", "big5", $target_path ))) {
echo "檔案:". $_FILES['myfile']['name'] . " 上傳成功!";
} else{
echo "檔案上傳失敗,請再試一次!";
}
}
}
?>
最後,以上有貼心顏色提醒,若發現程式跑不起來有Bug時,可先對照一下相關的路徑名稱是否皆有相符喔 ~