前言
一般我們要透過PHP實現上傳檔案的任務,通常需要利用HTML的form元素裏面的enctype屬性設置為multipart/form-data,讓該表單可以傳遞檔案資料型態。後端在以一支PHP程式負責處理表單傳來的檔案數据的更改名檔、放置路徑等等的邏輯處理作業。
選取要上傳的檔案
首先,建立一支index_uf.html程式,讓它包含一個可以上傳檔案的表單(form),於表單內增加input元素type屬性設為file,這樣一來用戶就能從用戶端選取想要上傳的檔案,最後再加入input元素type屬性為submit,讓用戶擁有提交檔案到伺服器的能力。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>選取欲上傳的檔案...</title>
</head>
<body>
<form action="upload_file.php" enctype="multipart/form-data" method="post">
<label for="file">檔名:</label>
<input id="file" name="file" type="file" />
<input name="submit" type="submit" value="提交" />
</form>
</body>
</html>
上傳程式邏輯
寫一支upload_file.php程式,開頭先設置utf-8編碼,再來判斷由用戶端傳來的submit按鈕的狀態是否為true,若為true時,於伺服器建立upload目錄、且把暫存檔名更改為用戶指定的檔案名稱(move_uploaded_file函數);反之將連結重新導回選取要上傳檔案畫面。
<?php
// 設定文件utf-8編碼
header("Content-Type:text/html; charset=utf-8");
if(isset($_POST["submit"])){
$sitepath = realpath($_SERVER["DOCUMENT_ROOT"]);
$up_dir = $sitepath . DIRECTORY_SEPARATOR . "upload". DIRECTORY_SEPARATOR;
if(!file_exists($up_dir)){
mkdir($up_dir);
}
$up_file = $up_dir . $_FILES["file"]["name"];
if (file_exists($up_file)) {
echo $_FILES["file"]["name"] . " 已經存在了!";
} else {
move_uploaded_file($_FILES["file"]["tmp_name"], $up_file);
echo "上傳檔案 " . $_FILES["file"]["name"] . "成功!!<br/>";
echo "儲存在: " . $up_file;
}
} else {
header("Location: index_uf.html");
}
?>
總結
上述只是一個簡單的HTML from的檔案上傳的教學文章,除了採用此種上傳檔案方法,你也可以使用jQuery upload或Flash的方式,來完成上傳檔案到伺服器的作業。
沒有留言:
張貼留言