<form enctype="multipart/form-data" action="uploadProcess.php" method="post" name="myform">
用戶名:<input type="text" name="username" /><br />
密碼:<input type="password" name="pwd" /><br />
上傳圖片:<input type="file" name="upimage"><br />
<input type="submit" name="sub" value="提交">
</form>
關鍵點: enctype="multipart/form-data" 必須設定,否則 $_FILES 為空。
<?php
$filetype_arr = array("image/jpeg","image/png","image/gif"); // 允許類型
if(!empty($_POST['sub'])){
$username = $_POST['username'];
$password = $_POST['pwd'];
if(is_uploaded_file($_FILES['upimage']['tmp_name'])){
$tmp_name = $_FILES['upimage']['tmp_name'];
// 類型驗證
if(!in_array($_FILES['upimage']['type'], $filetype_arr)){
echo "抱歉,僅支援: " . implode("、", $filetype_arr);
exit();
}
// 取得副檔名
$exten_name = substr($_FILES['upimage']['name'], strrpos($_FILES['upimage']['name'], "."));
// 目標目錄:/php/upfile/{username}/
$dest_name = $_SERVER['DOCUMENT_ROOT'] . "/php/upfile/" . $username . "/";
// 目錄不存在則建立
if(!file_exists($dest_name)){
if(!mkdir($dest_name, 0755, true)){
echo "建立目錄失敗,無法上傳";
exit();
}
}
// 移動暫存檔並重命名:時間戳+隨機數+副檔名
$new_name = $dest_name . time() . rand(1,100) . $exten_name;
if(move_uploaded_file($tmp_name, $new_name)){
echo "上傳成功";
}else{
echo "上傳失敗";
}
}else{
echo "找不到上傳檔案,請重試";
}
}
?>
getimagesize() 驗證圖片真實性php.ini upload_max_filesize + 代碼層 $_FILES['size'] 雙重限制$_FILES['upimage']['error'] 非 0:對照錯誤碼表(1=超過 upload_max_filesize,2=超過 MAX_FILE_SIZE,4=未上傳檔案等)post_max_size、max_execution_time、memory_limit