PHP dosya türünü almak nasıl

6 Cevap

Ben bir .doc dosyası var ve ben bunu bir .jpg uzatma vermek için adlandırılmış adlandırdı. Benim fonksiyonu ile adlandırılan dosyayı işlemek zaman dosya gerçekten JPEG olmamasına rağmen bir .jpg sahip olarak dosyayı kabul eder. Gerçek dosya türünü bulmak için en iyi yolu nedir? İşte benim geçerli kod:

function getExtension($str) {
   $i = strrpos($str,".");
   if (!$i) { return ""; }
   $l = strlen($str) - $i;
   $ext = substr($str,$i+1,$l);
   return $ext;
}

Uzantısı bağlı olmadan dosya türünü kontrol etmek için en iyi yolu nedir?

6 Cevap

Sen Fileinfo kendi içeriğine göre dosya türlerini tespit etmek için PHP'nin kullanabilirsiniz; Ancak, PHP 5.3.0 ya da eğer PECL uzantıları yüklemek için erişimi kullanılabilir.

Bu (: jpg, jpe, jpeg içerikler için hesaplar muhtemelen gibi birden fazla ortak uzantıları, sahip) daha doğru olması gereken bu tür text / html, image / gif, veya uygulama / vnd.ms-excel gibi bir dosyanın MIME türünü döndürür .

Bu kullandığım biridir ve bu beni başarısız olmamıştı.

function getExtension($str)
{
    $i = explode('.', $str);
    return strtolower(end($i));
}

Birisi, you would have to have the spec of every file type you were checking for Ben bunu söylemek ne kadar kolay emin değilim o adını vardır eğer gerçek orijinal dosya uzantısını kontrol edebilirsiniz eğer ben bilmiyorum. Ama bir şey bu gibi bir görüntü olduğunu doğrulamak olabilir:

function isImage($file)
{
    if(@getimagesize($file) == false)
        return false;
    else
        return true;
}

Özetle

if(isImage($file) && getExtention($file) == "jpg")
{
   //Process, it's a valid image
}

Eğer son iki dizi öğelerini istediğiniz zaman, explode(".", $sFileName) and take the last item of the array to do this, but that one fails when you have something like filename.tar.gz kullanmak veya filename.class.php zaman, size son iki-dizi-öğeleri hayata geçirdik sonra -şey, sadece son bir tane istiyorum.

Bunu yapmanın en iyi yolu, bence, pathinfo($sFileName) . This returns an array with the keys dirname, basename, extension (eğer varsa), ve {[ (4)]}.

Eğer dosya türünü istiyorsanız, ancak, dosyanın MIME türü almak için PHP 5.3 'nin yerleşik Fileinfo gibi bir şey kullanmak gerekecek. (getimagesize() de MIME türünü döndürür, ancak görüntülerde bu sadece çalışır!)

echo "<select onchange=\"window.location = 'file.php?'+this.value\">";

yoksa bu komut gömmek zorunda kalmadan bir liner zevk. :)