Ver Mensaje Individual
  #5 (permalink)  
Antiguo 10/10/2012, 15:26
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 6 meses
Puntos: 320
Respuesta: [[[APORTE]]] Funcion para obtener Mime

Código PHP:
Ver original
  1. "hh" => 'text/x-c',
  2.             "dic" => 'text/x-c',
  3.             "f" => 'text/x-fortran',
  4.             "for" => 'text/x-fortran',
  5.             "f77" => 'text/x-fortran',
  6.             "f90" => 'text/x-fortran',
  7.             "java" => 'text/x-java-source',
  8.             "opml" => 'text/x-opml',
  9.             "p" => 'text/x-pascal',
  10.             "pas" => 'text/x-pascal',
  11.             "nfo" => 'text/x-nfo',
  12.             "etx" => 'text/x-setext',
  13.             "sfv" => 'text/x-sfv',
  14.             "uu" => 'text/x-uuencode',
  15.             "vcs" => 'text/x-vcalendar',
  16.             "vcf" => 'text/x-vcard',
  17.             "3gp" => 'video/3gpp',
  18.             "3g2" => 'video/3gpp2',
  19.             "h261" => 'video/h261',
  20.             "h263" => 'video/h263',
  21.             "h264" => 'video/h264',
  22.             "jpgv" => 'video/jpeg',
  23.             "jpm" => 'video/jpm',
  24.             "jpgm" => 'video/jpm',
  25.             "mj2" => 'video/mj2',
  26.             "mjp2" => 'video/mj2',
  27.             "mp4" => 'video/mp4',
  28.             "mp4v" => 'video/mp4',
  29.             "mpg4" => 'video/mp4',
  30.             "mpeg" => 'video/mpeg',
  31.             "mpg" => 'video/mpeg',
  32.             "mpe" => 'video/mpeg',
  33.             "m1v" => 'video/mpeg',
  34.             "m2v" => 'video/mpeg',
  35.             "ogv" => 'video/ogg',
  36.             "qt" => 'video/quicktime',
  37.             "mov" => 'video/quicktime',
  38.             "uvh" => 'video/vnd.dece.hd',
  39.             "uvvh" => 'video/vnd.dece.hd',
  40.             "uvm" => 'video/vnd.dece.mobile',
  41.             "uvvm" => 'video/vnd.dece.mobile',
  42.             "uvp" => 'video/vnd.dece.pd',
  43.             "uvvp" => 'video/vnd.dece.pd',
  44.             "uvs" => 'video/vnd.dece.sd',
  45.             "uvvs" => 'video/vnd.dece.sd',
  46.             "uvv" => 'video/vnd.dece.video',
  47.             "uvvv" => 'video/vnd.dece.video',
  48.             "dvb" => 'video/vnd.dvb.file',
  49.             "fvt" => 'video/vnd.fvt',
  50.             "mxu" => 'video/vnd.mpegurl',
  51.             "m4u" => 'video/vnd.mpegurl',
  52.             "pyv" => 'video/vnd.ms-playready.media.pyv',
  53.             "uvu" => 'video/vnd.uvvu.mp4',
  54.             "uvvu" => 'video/vnd.uvvu.mp4',
  55.             "viv" => 'video/vnd.vivo',
  56.             "webm" => 'video/webm',
  57.             "f4v" => 'video/x-f4v',
  58.             "fli" => 'video/x-fli',
  59.             "flv" => 'video/x-flv',
  60.             "m4v" => 'video/x-m4v',
  61.             "mkv" => 'video/x-matroska',
  62.             "mk3d" => 'video/x-matroska',
  63.             "mks" => 'video/x-matroska',
  64.             "mng" => 'video/x-mng',
  65.             "asf" => 'video/x-ms-asf',
  66.             "asx" => 'video/x-ms-asf',
  67.             "vob" => 'video/x-ms-vob',
  68.             "wm" => 'video/x-ms-wm',
  69.             "wmv" => 'video/x-ms-wmv',
  70.             "wmx" => 'video/x-ms-wmx',
  71.             "wvx" => 'video/x-ms-wvx',
  72.             "avi" => 'video/x-msvideo',
  73.             "movie" => 'video/x-sgi-movie',
  74.             "smv" => 'video/x-smv',
  75.             "ice" => 'x-conference/x-cooltalk'
  76.         ];
  77.         //Se obtiene la extencion en minusculas del archivo.
  78.         $EXT = StrToLower(End(Explode('.',$NDA)));
  79.         //Se obtiene el Mime de la extencion.
  80.         $MiMe = $MiMeS[$EXT];
  81.         //Se libera el espacio en memoria del vector MiMeS.
  82.         Unset($MiMeS);
  83.         //Si el Mime de la extencion no existe se asume que es un archivo binario.
  84.         If ($MiMe == '') { $MiMe = 'application/octet-stream'; }
  85.        
  86.         Return($MiMe);
  87.     }
  88.    
  89.     //Modo de uso:
  90.    
  91.     $NombreDeArchivo = 'Archivo.mp4';
  92.     Echo(GetMime($NombreDeArchivo));
  93. ?>

Ventajas:
  • No usa extensiones.
  • Muchos mas mimes que las funciones nativas.
  • Pueden agregarse mas mimes fácilmente.
  • Eficiente.


Contras:
  • No indica el Mime real del archivo, solo el Mime de la extensión.


Espero les sea de utilidad si en algún momento se topan con este problema.

Cualquier sugerencia para mejorarla es bienvenida, y cualquier critica mientras no sea ofensiva también es aceptada.

Saludos.

Nota:
Para almacenar el Mime resultante de esta funcion en una base de datos debera usarse un campo Char(72).

Fuentes de los Mimes:
http://svn.apache.org/viewvc/httpd/h...?view=annotate
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Última edición por NSD; 10/10/2012 a las 16:45