2013-05-12 16 views
7

Bir süredir PHP belgelerine bakıyorum ama bir MIME türü uzantısını bir dosya türü uzantısına dönüştürmenin bir yolunu bulamadım.MIME türünü dosyaya dönüştürün Uzatma PHP'si

image_type_to_extension 

Dosya bir görüntüyse, işe yarar görünüyor. Benim özel durumumda, mim türleri görüntüler için değil, yazı tipi türleri içindir: 'otf, ttf'.

function getExtension ($mime_type){ 

    $extensions = array('image/jpeg' => 'jpeg', 
         'text/xml' => 'xml' 
         ); 

    // Add as many other Mime Types/File Extensions as you like 

    return $extensions[$mime_type]; 

} 

Not:

+0

Her MIME türünde sabit bir dosya uzantısı yoktur. Ben her MIME türü için bir dosya uzantısı ile bir dizi oluşturacaksınız sisteminiz –

+0

işlemek için muhtemel olacak OTF yazı tipleri için standart MIME türü yok –

+0

Tabii ki: 'uygulama/x-font-otf' –

cevap

16

Sen gibi bir şey kullanabilirsiniz değil her MIME türü sabit dosya uzantısına sahip. Ayrıca, application/octet-stream gibi MIME türleri birden çok dosya uzantısına başvurabilir.

+0

Teşekkür ederiz siz, octet-stream'in çoklu dosya uzantıları için başvurduğunu bilmiyordum. Belki de dosya adını göndermek için bir yol bulmalıyım, şu anda veri bloğundan bir bloğu dönüştürdüğümüze göre "blob" olsa da, dosya adını değiştirebilirim ancak firefox'ta çalışmaz: http: //stackoverflow.com/questions/8495301/blobbuilder olarak değiştirilip-adı-formdata-on-xhr biçiminde – TaylorMac

+11

Bu rotaya gitmeye karar verirseniz, size başlamak için oldukça kapsamlı bir liste var: https://github.com /EllisLab/CodeIgniter/blob/develop/application/config/mimes.php – xbonez

+0

Burada benim gibi geç gelen insanlar için, iş bu işi yapan özel bir kütüphane: https://github.com/dflydev/dflydev-apache-mime -tipler – Romain

-2

Bu dosyanın her zaman doğru dosya uzantısını döndürüp döndürmeyeceğinden emin değilsiniz, ancak mime_types dosyasını dönüştürmek yerine dosya adından uzantı almak için pathinfo()'u kullanabilirsiniz.

$Extension = pathinfo(basename($_FILES['image']['name']), PATHINFO_EXTENSION); 

echo $Extension; 
6

Önce bir görüntü için $ mime türünü alın, sonra dizeyi '/' ile bir diziyi döndürecek şekilde patlatın.

$extension = explode('/', $mime)[1]; 
+0

Bu çözümün işe yarayıp yaramadığını merak ediyordum. Ama mime türünden her zaman "/" ile ayrılmış 2 parçaya sahip olacaktır. Bunu kanıtlayan mime türünün tam bir listesi https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types – BoCyrill

+0

Evet, belirli bir MIME türü kümesi koymak yerine, böyle yapılmalı .... –

İlgili konular