$_FILES
是一個預定義的全局數組,用于在 PHP 中處理 HTTP 文件上傳。要有效利用 $_FILES
,您需要遵循以下步驟:
檢查文件上傳是否成功:
使用 isset()
函數檢查 $_FILES
數組中是否存在指定的文件。例如,檢查名為 file_upload
的文件是否已上傳:
if (isset($_FILES['file_upload'])) {
// 文件上傳成功
} else {
// 文件上傳失敗
}
檢查文件大小:
使用 $_FILES['file_upload']['size']
獲取上傳文件的大小。您可以使用 if
語句檢查文件大小是否符合您的要求。例如,檢查文件大小是否小于 2MB:
if ($_FILES['file_upload']['size'] < 2097152) {
// 文件大小小于 2MB
} else {
// 文件大小大于等于 2MB
}
檢查文件類型:
使用 $_FILES['file_upload']['type']
獲取上傳文件的 MIME 類型。您可以使用 if
語句檢查文件類型是否符合您的要求。例如,檢查文件是否為 JPEG 圖像:
if ($_FILES['file_upload']['type'] == 'image/jpeg') {
// 文件類型為 JPEG 圖像
} else {
// 文件類型不是 JPEG 圖像
}
檢查文件是否有效:
使用 $_FILES['file_upload']['error']
獲取上傳文件的錯誤代碼。如果錯誤代碼為 0,則表示文件上傳成功。例如:
if ($_FILES['file_upload']['error'] == UPLOAD_ERR_OK) {
// 文件上傳成功
} else {
// 文件上傳失敗
}
將文件移動到指定目錄:
使用 move_uploaded_file()
函數將上傳文件移動到服務器上的指定目錄。例如,將文件移動到名為 uploads
的目錄:
$upload_dir = 'uploads/';
$upload_file = $upload_dir . basename($_FILES['file_upload']['name']);
if (move_uploaded_file($_FILES['file_upload']['tmp_name'], $upload_file)) {
// 文件已成功移動
} else {
// 文件移動失敗
}
生成唯一的文件名:
為了避免文件名沖突,可以使用 uniqid()
函數生成唯一的文件名。例如:
$upload_dir = 'uploads/';
$upload_file = $upload_dir . uniqid() . '.' . pathinfo($_FILES['file_upload']['name'], PATHINFO_EXTENSION);
將文件信息保存到數據庫: 如果您想將上傳文件的詳細信息(如文件名、文件大小、文件類型等)保存到數據庫,可以使用 SQL 語句將數據插入到相應的表中。例如:
$db = new PDO('mysql:host=localhost;dbname=mydb', 'username', 'password');
$stmt = $db->prepare("INSERT INTO file_uploads (file_name, file_size, file_type) VALUES (?, ?, ?)");
$stmt->execute([$_FILES['file_upload']['name'], $_FILES['file_upload']['size'], $_FILES['file_upload']['type']]);
通過遵循這些步驟,您可以有效地利用 $_FILES
數組處理 PHP 中的文件上傳。