有沒有辦法在不寫擴展名的情況下獲得圖像的擴展名?如何使用PHP獲取圖像的擴展?
例如在下面的代碼中,我必須編寫image.GIF來知道它是GIF文件。
pathinfo('/testdir/dir2/image.gif', PATHINFO_EXTENSION);
有沒有辦法在不寫擴展名的情況下獲得圖像的擴展名?如何使用PHP獲取圖像的擴展?
例如在下面的代碼中,我必須編寫image.GIF來知道它是GIF文件。
pathinfo('/testdir/dir2/image.gif', PATHINFO_EXTENSION);
$ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);
擺脫我的「自家釀製的代碼」,進行了我的一個downvote出於某種原因。
上面的代碼可能會幫助更多?
大家都對,PHP有它自己的設備,並且pathinfo應該可以正常工作。
相關信息:
function get_file_extension($file_name) {
return substr(strrchr($file_name,'.'),1);
}
可以作爲某種形式的替代。不知道要讀取的文件的確切性質,很難給出確切的答案。
不,因爲a)它不會改變任何東西,b)它會用一個自制軟件替換一個完美的內置實現(爲什麼?) – Jon 2013-04-24 11:27:39
因爲即使這是一種家庭釀造溶劑,即使我以某種方式 - 重新發明輪子。它仍然可以解決類似或類似的問題。沒有必要在downvote,因爲你不覺得它對你有用。給出的代碼對其他人仍然有用,並且應該如此顯示。 – 2013-04-24 11:49:43
我很抱歉,但我不認爲複製內置的功能是有用的。事實上,我認爲這是一種損害,因爲它a)較慢,b)未經測試和c)不必要的代碼 - 因此是不好的做法,我們應該全部引導人們遠離。無論如何,這要取決於你*證明這個代碼提供了一些新的東西,而不是由我或任何其他人來證明否定。 – Jon 2013-04-24 11:54:13
我一直使用此功能,找出一個文件MIME類型:
function validateMimeType($filePath, $extensions) {
$finfo = finfo_open(FILEINFO_MIME);
$mimeType = finfo_file($finfo, $filePath);
finfo_close($finfo);
return preg_match("/$extensions/i", $mimeType);
}
其中$擴展爲一個字符串,在這裏你定義你想要的格式,如:
$extension = "jpg|jpeg|png";
如果您想驗證來自不可信來源的文件是否真的是圖像,則使用此功能。如果您只想查找擴展名,請檢查MIME類型。 – fje 2013-04-24 11:38:39
要確定它實際上是一個GIF,你應該要求MIME類型:
例如:
http://www.sanisoft.com/blog/2010/05/17/how-to-use-php-fileinfo-extension-to-get-file-mime-type/
在交換機中使用exif_imagetype($ file_name)時,如果值的情況下會得到您的名字中沒有它的分機。
http://php.net/manual/en/function.exif-imagetype.php
例
$type = false;
switch(exif_imagetype($file_name)) {
case 1:
$type = 'gif';
break;
case 2:
$type = 'jpeg';
break;
case 3:
$type = 'png';
break;
}
基本上沒有。
如果有2個圖像image.gif和image.jpg,那麼您會得到什麼結果?您想獲得關於文件的信息,因此您必須使用其名稱來調用該文件。延伸是名字的一部分。
你可以讀取目錄的所有內容,並過濾掉你想要的文件。
$dir = "/testdir/dir2";
foreach(scandir($dir) as $file)
{
if(is_dir($file) == false && $file != ".." && $file != ".")
{
var_dump(pathinfo(dir . '/' . $file, PATHINFO_EXTENSION));
}
}
Pathinfo是爲了簡化將文件名拆分爲擴展名和名稱而製作的。這並不是要確定文件類型,如果知道硬編碼的名稱,爲什麼還要將名稱分成若干部分?
所以你想檢測圖像的*文件格式* – Jon 2013-04-24 11:26:54
所以你知道這個名字,但你不知道文件夾中的擴展名? – HamZa 2013-04-24 11:27:17
是喬恩,這正是我想弄明白的 – user2310422 2013-04-24 11:29:57