文件上傳是我們在處理表單提交時候最常用的功能之一,今天寫了一個小小的demo,如下:
先看結構:

html為表單提交的頁面,php為處理表單的文件,upload為上傳文件所放的位置
html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上傳</title>
</head>
<body>
<form action="file_updata.php" method="post" enctype="multipart/form-data">
<label for="files">文件上傳</label>
<input type="file" id="files" name="file">
<br/>
<input type="submit" name="submits" value="提交">
</form>
</body>
</html>
php:
$file = $_FILES["file"];
if ($file["error"] > 0) {
echo "錯誤:" . $file["error"];
} else {
echo "文件名稱:" . $file["name"] . "</br>";
echo "文件類型:" . $file["type"] . "</br>";
echo "文件大小:" . ($file["size"] / 1024) . "K</br>";
echo "文件臨時存儲的位置:" . $file["tmp_name"] . "</br>";
//保存上傳的文件
if (file_exists("upload" . $file["name"])) {
echo $file["name"] . "文件已經存在";
} else {
//如果目錄不存在則將該文件上傳
move_uploaded_file($file['tmp_name'], "upload/" . $file["name"]);
echo '文件上傳成功!';
}
}
我上傳了個.txt的文件,如下:

執行:

可以看到十分的順利,那看看結果吧 :

此時上傳的文件是我們想要的,但是卻出現了亂碼的情況,嗯,好,那就來解決吧,:
首先,在php文件的頭部加這么一段代碼:
header("Content-type: text/html; charset=utf-8");
然后定義一個變量:
$name = iconv('utf-8','gb2312',"upload/".$file["name"]);
好,那我們看看整個的PHP頁面:
header("Content-type: text/html; charset=utf-8");
$file = $_FILES["file"];
if($file["error"]>0){
echo "錯誤:".$file["error"];
}else{
$name = iconv('utf-8','gb2312',"upload/".$file["name"]);
echo "文件名稱:".$file["name"]."</br>";
echo "文件類型:".$file["type"]."</br>";
echo "文件大小:".($file["size"]/1024)."K</br>";
echo "文件臨時存儲的位置:".$file["tmp_name"]."</br>";
//保存上傳的文件
if(file_exists("upload".$file["name"])){
echo $file["name"]."文件已經存在";
}else{
//如果目錄不存在則將該文件上傳
if(move_uploaded_file($file['tmp_name'],$name)){
// move_uploaded_file($file['tmp_name'],"upload/".$file["name"]);
echo '文件上傳成功!';
echo '圖片信息:';
print_r($file);
}
}
運行:

完美
