2013-05-12 13 views
7

Rozglądałem się od pewnego czasu w dokumentacji PHP, ale nie znalazłem sposobu przekonwertowania rozszerzenia typu MIME na rozszerzenie typu pliku.Konwertuj typ MIME na plik Rozszerzenie PHP

image_type_to_extension 

Wydaje się działać, jeśli plik jest obrazem. W moim szczególnym przypadku typy MIME nie są dla obrazów, są one dla typów czcionek: "otf, ttf".

+0

Nie każdy typ MIME ma stałe rozszerzenie pliku. Stworzyłem tablicę z rozszerzeniem pliku dla każdego typu MIME, który będzie prawdopodobnie przetwarzany w systemie. –

+0

Nie ma standardowego typu MIME dla czcionek OTF. –

+0

Oczywiście jest: 'application/x-font-otf' –

Odpowiedz

16

Można użyć coś takiego:

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]; 

} 

Uwaga: nie każdy typ MIME ma stałe rozszerzenie pliku. Ponadto typy MIME, takie jak application/octet-stream, mogą odnosić się do wielu rozszerzeń plików.

+0

Dziękuję ty, nie wiedziałem, że strumień oktetowy odnosi się do wielu rozszerzeń plików. Być może powinienem znaleźć sposób na przesłanie nazwy pliku, chociaż w tej chwili jest to "blob" z powodu konwersji danychURL na blob, mogę zmienić nazwę pliku, ale to nie działa w firefox: http: //stackoverflow.com/questions/8495301/zmiana-nazwa-pliku-w-blobbuilder-to-be-passed-as-formdata-on-xhr – TaylorMac

+11

Jeśli zdecydujesz się na tę trasę, poniżej znajdziesz dość wyczerpującą listę: https://github.com /EllisLab/CodeIgniter/blob/develop/application/config/mimes.php – xbonez

+0

Dla osób przybywających tutaj późno jak ja, tutaj jest dedykowana biblioteka, która wykonuje zadanie: https://github.com/dflydev/dflydev-apache-mime -types – Romain

-2

Nie jestem pewien, czy ten plik zawsze zwróci prawidłowe rozszerzenie pliku, ale można użyć numeru pathinfo(), aby uzyskać rozszerzenie z nazwy pliku, zamiast konwertować mime_types.

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

echo $Extension; 
6

Najpierw pobierz typ $ mime dla obrazu, a następnie rozbij ciąg znaków znakiem "/", który zwróci tablicę.

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

Zastanawiałem się, czy to rozwiązanie może działać. Ale będzie tak, ponieważ typ mime zawsze ma 2 części oddzielone "/". Pełna lista typów mime, które to potwierdzają https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types – BoCyrill

+0

Tak, zamiast umieszczać określony zestaw typów MIME, może po prostu Zrób tak ... –