php檔案上傳
阿新 • • 發佈:2021-12-05
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>upload files</title> </head> <body> <form action="upload.php" enctype="multipart/form-data" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="10000" /> 上傳檔案:<input type="file" name="file"/> <input type="submit" value="上傳" /> </form> </body> </html>
upload.php <?php print_r($_FILES); ?>
Array ( [file] => Array ( [name]=> 照片檔案.jpg [type] => image/jpeg [tmp_name] => F:\wamp\tmp\php41BB.tmp [error] => 0 [size] => 73886 ) )
//判斷是否是POST上傳過來的檔案 if(!is_uploaded_file($tempName)){ exit("不是通過HTTP POST方式上傳上來的"); } // 判斷檔案上傳的型別 if(!in_array($fileType, $typeList)){ exit("上傳的檔案不是指定型別"); } //避免使用者上傳惡意檔案,如把病毒副檔名改為圖片格式 if(!getimagesize($tempName)){ exit("上傳的檔案不是圖片"); } // 驗證檔案上傳大小 if($fileSize>100000){ //對特定表單的上傳檔案限制大小 exit("上傳檔案超出限制大小"); } //避免上傳檔案的中文名亂碼,把iconv抓取到的字元編碼從utf-8轉為gbk輸出 $fileName=iconv("UTF-8", "GBK", $fileName); //在圖片名稱後加入時間戳,避免重名檔案覆蓋 $fileName=str_replace(".", time().".", $fileName); // 移動檔案到指定位置 if(move_uploaded_file($tempName, "uploads/".$fileName)){ echo "上傳檔案成功!"; }else{ echo "上傳檔案失敗"; }
file_exists 檢查檔案或目錄是否存在
is_uploaded_file 判斷檔案是否是通過 HTTP POST 上傳的
move_uploaded_file 將上傳的檔案移動到新位置
is_writable 判斷給定的檔名是否可寫
iconv 字元編碼互轉
str_replace 字串替換(更改檔名,防重名)
getimagesize 檢查是否為圖片檔案(其他型別的檔案就算字尾名改了也能被檢測到)