2013-05-12 13 views
7

Ho cercato per un po 'di tempo nella documentazione di PHP, ma non ho trovato alcun modo per convertire un'estensione di tipo MIME in un'estensione di tipo di file.Converti il ​​tipo MIME nel file Estensione PHP

image_type_to_extension 

Sembra funzionare se il file è un'immagine. Nel mio caso particolare, i tipi mime non sono per immagini, sono per tipi di carattere: 'otf, ttf'.

+0

Non tutti i tipi MIME hanno un'estensione di file fissa. Creo un array con un'estensione di file per ogni tipo MIME che il sistema sta per elaborare probabilmente –

+0

Non esiste un tipo MIME standard per i font OTF –

+0

Ovviamente c'è: 'application/x-font-otf' –

risposta

16

Si potrebbe usare qualcosa come:

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

} 

Nota: non tutti i tipi MIME ha un'estensione fissa. Inoltre, i tipi MIME come application/octet-stream possono fare riferimento a più estensioni di file.

+0

Grazie tu, non sapevo che octet-stream si riferiva a più estensioni di file. Forse dovrei trovare un modo per inviare il nome del file, anche se in questo momento è "blob" a causa della conversione di un dataURL in blob, posso cambiare il nome del file ma non funziona in firefox: http: //stackoverflow.com/questions/8495301/change-filename-in-blobbuilder-to-be-pass-as-formdata-on-xhr – TaylorMac

+11

Se si decide di seguire questa strada, ecco un elenco abbastanza esaustivo per iniziare: https://github.com /EllisLab/CodeIgniter/blob/develop/application/config/mimes.php – xbonez

+0

Per le persone che arrivano qui in ritardo come me, ecco una libreria dedicata che fa il lavoro: https://github.com/dflydev/dflydev-apache-mime -types – Romain

-2

Non sicuro se questo restituirà sempre l'estensione file corretta, ma è possibile utilizzare pathinfo() per ottenere l'estensione dal nome file, invece di convertire mime_types.

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

echo $Extension; 
6

Prima ottenere un tipo $ mime per un'immagine, quindi esplodere la stringa con '/' che restituirà un array.

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

Mi chiedevo se questa soluzione potesse funzionare. Ma dal momento che il tipo mime ha sempre 2 parti separate da "/". Un elenco completo di tipi mime che lo provano https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types – BoCyrill

+0

Sì, invece di mettere un certo insieme di tipi MIME, può semplicemente sii fatto così .... –

Problemi correlati