Obteniendo mime tipo de archivos comprimidos
Obtener el tipo mime de un archivo cargado es bastante fácil:
<code>echo mime_content_type($fileatt['tmp_name']); </code>
Sin embargo, también quiero comprobar los archivos de tipo mime que se incluyen en un archivo comprimido. Después de descomprimir mis archivos (repasando los archivos en el archivo zip y dondei
es el archivo actual), lo he intentado:
<code>$info = pathinfo($zip->getNameIndex($i)); echo mime_content_type($info['dirname'] . "\\" . $info['basename']); </code>
que da el error: Advertencia: mime_content_type () [function.mime-content-type]: el archivo o la ruta no se encontraron '. \ foo.pdf' enC:\Users\<user>\<website>\validation.php
en linea 56
Me di cuenta de que eldirname
para un archivo comprimido es relativo al archivo zip, no a la ruta absoluta, así que intenté:
<code>$a = pathinfo($fileatt['tmp_name']); $b = $a['dirname'] . "\\" . $info['basename']; echo mime_content_type($b); </code>
que da el error: Advertencia: mime_content_type () [function.mime-content-type]: el archivo o la ruta no se encontraron 'C: \ xampp \ tmp \ foo.pdf' enC:\Users\<user>\<website>\validation.php
en linea 56
¿Alguien puede arrojar alguna luz sobre la ruta del archivo? (Sospecho que la respuesta podría ser la misma que el comentario enobteniendo altura y ancho de la imagen de archivos comprimidos, pero hay métodos alternativos?)
ACTUALIZAR
Gracias a Baba, lo siguiente funciona:
<code>$fp = fopen('zip://C:\Users\<user>\<website>\test.zip#foo.jpg', "r"); </code>
(n.b. Solo puedo hacer que esto funcione cuando proporciono la ruta completa del archivo zip, no un archivo tmp como sería el caso cuando un archivo se carga a través de un formulario). Sin embargo, tratando de obtener el tipo mime:echo mime_content_type($fp);
genera el error:
<code>Warning: mime_content_type() [function.mime-content-type]: stream does not support seeking in C:\Users\<user>\<website>\includes\validation.php on line 70 </code>
Esto sucede independientemente del tipo de archivo (es decir, el problema indicado en el único comentario enhttp://php.net/manual/en/ziparchive.getstream.php no parece afectarme).
Por cierto, este es también el mismo error que obtengo cuando intento un método diferente:$fp = $zip->getStream('foo.jpg');
Sé que hay varias otras preguntas de 'transmisión no compatible' en SO, pero no pude averiguar cómo se relacionaban con mi problema, y esperaba que dado que este método ha sido específicamente sugerido, alguien podría tener una buena respuesta. .
(p.s. no estoy usando elfinfo_*
funciona como mi host actualmente se niega a instalar PHP v5.3).