在PHP 中偵測檔案類型:上傳問題故障排除
您在使用$_FILES['fupload' 驗證圖片檔案類型時遇到挑戰]['類型']。使用者報告了不一致的錯誤訊息,表明此方法可能不可靠。
為了確保準確的檔案類型偵測,請考慮替代方法:
使用mime_content_type
您使用mime_content_type($_FILES['fupload'] ['type']) 的建議部分正確。但是,仍然不建議僅依賴使用者提供的值(即檔案的 MIME 類型)。用戶可以輕鬆地操縱這些資訊。
更可靠的方法
對於圖像文件,類型驗證的首選方法是使用exif_imagetype 函數,如下所示:
$allowedTypes = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF); $detectedType = exif_imagetype($_FILES['fupload']['tmp_name']); $error = !in_array($detectedType, $allowedTypes);
使用finfo函數
如果如果您的伺服器支援finfo 擴展,您可以利用finfo_file 等函數來獲取詳細的文件信息,包括其MIME 類型和其他屬性:
$finfo = new finfo(FILEINFO_MIME_TYPE); $mime_type = $finfo->file($_FILES['fupload']['tmp_name']); $error = ($mime_type != 'image/gif' && $mime_type != 'image/png' && $mime_type != 'image/jpeg');
透過使用這些方法,您可以可靠地驗證文件類型並防止意外文件上傳期間發生錯誤。
以上是如何可靠地檢測 PHP 中的文件類型以防止上傳問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!