3 回答

TA貢獻1886條經(jīng)驗 獲得超2個贊
獲取mimetype的本機方法:
對于PHP <5.3,請使用mime_content_type()
對于PHP> = 5.3,請使用finfo_open()或mime_content_type()
獲得MimeType的替代方法是exif_imagetype和getimagesize,但是這些方法依賴于安裝適當(dāng)?shù)膸?。此外,它們可能僅返回圖像模仿類型,而不是magic.mime中給出的整個列表。
雖然mime_content_type可以從PHP 4.3,是FileInfo的擴展的一部分(這是默認,因為PHP 5.3啟用,除了Windows平臺,它必須手動啟用,詳見這里)。
如果您不想打擾系統(tǒng)上可用的功能,只需將所有四個函數(shù)包裝到一個代理方法中,該方法將函數(shù)調(diào)用委托給任何可用的方法,例如
function getMimeType($filename)
{
$mimetype = false;
if(function_exists('finfo_open')) {
// open with FileInfo
} elseif(function_exists('getimagesize')) {
// open with GD
} elseif(function_exists('exif_imagetype')) {
// open with EXIF
} elseif(function_exists('mime_content_type')) {
$mimetype = mime_content_type($filename);
}
return $mimetype;
}

TA貢獻1827條經(jīng)驗 獲得超4個贊
在和getimagesize()應(yīng)制定文件是否是一個圖像的最明確的方式:
if(@is_array(getimagesize($mediapath))){
$image = true;
} else {
$image = false;
}
因為這是示例getimagesize()輸出:
Array (
[0] => 800
[1] => 450
[2] => 2
[3] => width="800" height="450"
[bits] => 8
[channels] => 3
[mime] => image/jpeg)

TA貢獻1966條經(jīng)驗 獲得超4個贊
使用文件擴展名和getimagesize
功能來檢測上載的文件是否具有正確的格式只是入門級檢查,它可以簡單地通過上傳具有真實擴展名和圖像頭的某些字節(jié)但內(nèi)容錯誤的文件來繞過。
為了安全起見,您可以對上傳的圖片進行縮略圖/調(diào)整大小(即使具有原始圖像尺寸),并保存此版本而不是上傳的版本。還可以獲取上傳的文件內(nèi)容并搜索特殊字符,例如<?php
查找文件是否為圖片。
- 3 回答
- 0 關(guān)注
- 627 瀏覽
添加回答
舉報