form.html文件以下:php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文件上傳</title> </head> <body> <form action="test.php" method="post" enctype="multipart/form-data"> 用戶名:<input type="text" name="user"> 頭像:<input type="file" name="pic"> <input type="submit" value="提交"> </form> </body> </html>
test.php文件以下:html
<?php if($_FILES['pic']['error'] == 0){ // 1.限制文件上傳的大小 $max_size = 2*1024*1024; // 限制上傳文件最大值爲2M if($_FILES['pic']['size'] > $max_size){ die('文件大小最大不能超過2M'); } // 2.防止文件重名 $file_name = uniqid('si_', false); // 文件名稱 $file_suffix = strrchr($_FILES['pic']['name'], '.'); // 文件後綴 $file_upload_root_path = './uploads/'; // 文件上傳根路徑 // 3.按照年月日格式建立子目錄 $file_upload_sub_path = date('Ymd') . '/'; if(!is_dir($file_upload_root_path . $file_upload_sub_path)){ mkdir($file_upload_root_path . $file_upload_sub_path, 0777, true); } $file = $file_upload_root_path . $file_upload_sub_path . $file_name . $file_suffix; // 文件全名 // 4.限制用戶上傳的文件類型 $allow_type = ['image/png', 'image/gif', 'image/jpg', 'image/jpeg']; if(!in_array($_FILES['pic']['type'], $allow_type)){ die('格式錯誤,請選擇jpg|gif|png類型的圖片'); } $finfo = new finfo(FILEINFO_MIME_TYPE); $file_type = $finfo->file($_FILES['pic']['tmp_name']); if(!in_array($file_type, $allow_type)){ die('您上傳的格式不正確'); } // 5.執行上傳操做 if(move_uploaded_file($_FILES['pic']['tmp_name'], $file)){ echo '上傳成功'; }else{ echo '上傳失敗'; } }else{ echo '上傳失敗'; }