Saltar al contenido

Archivos .rar, .zip Tipo MIME

Este escrito ha sido probado por expertos para garantizar la veracidad de nuestro contenido.

Solución:

Las respuestas de freedompeace, Kiyarash y Sam Vloeberghs:

.rar    application/x-rar-compressed, application/octet-stream
.zip    application/zip, application/octet-stream, application/x-zip-compressed, multipart/x-zip

También verificaría el nombre del archivo. Así es como puede verificar si el archivo es un archivo RAR o ZIP. Lo probé creando una aplicación de línea de comandos rápida.

Tenga en cuenta que aún no será 100% seguro, pero probablemente sea lo suficientemente bueno.

$ rar.exe l somefile.zip
somefile.zip is not RAR archive

Pero incluso WinRAR detecta archivos que no son RAR como archivos SFX:

$ rar.exe l somefile.srr
SFX Volume somefile.srr

Para cargar:

Se puede encontrar una lista oficial de tipos mime en la Autoridad de Números Asignados de Internet (IANA) . Según su lista Content-Type encabezado para zip es application/zip.

El tipo de medio para rar los archivos no están registrados oficialmente en IANA, pero el valor de tipo mime no oficial de uso común es application/x-rar-compressed.

application/octet-stream significa tanto como: "Le envío un flujo de archivos y no se especifica el contenido de este flujo" (así es true que puede ser un zip o rar archivo también). Se supone que el servidor detecta cuál es el contenido real de la transmisión.

Nota: Para cargar, no es seguro confiar en el tipo mime establecido en el Content-Type encabezamiento. El encabezado se establece en el cliente y se puede establecer en cualquier valor aleatorio. En su lugar, puede usar las funciones de información del archivo php para detectar el tipo de archivo mime en el servidor.


Para descargar:

Si desea descargar un zip archivo y nada más, solo debe configurar uno solo Accept valor del encabezado. Cualquier valor adicional establecido se usará como reserva en caso de que el servidor no pueda satisfacer sus necesidades en el Accept cabecera solicitada tipo mime.

Según las especificaciones de WC3 esto:

application/zip, application/octet-stream 

se interpretará como: "Prefiero un application/zip tipo mime, pero si no puede entregar esto un application/octet-stream (un flujo de archivos) también está bien".

Así que solo uno:

application/zip

le garantizará un zip archivo (o un 406 - Not Acceptable respuesta en caso de que el servidor no pueda satisfacer su solicitud).

no debes confiar $_FILES['upfile']['mime'], compruebe el tipo MIME usted mismo. Para tal fin, puede utilizar fileinfo extensión, habilitada por defecto a partir de PHP 5.3.0.

  $fileInfo = new finfo(FILEINFO_MIME_TYPE);
  $fileMime = $fileInfo->file($_FILES['upfile']['tmp_name']);
  $validMimes = array( 
    'zip' => 'application/zip',
    'rar' => 'application/x-rar',
  );

  $fileExt = array_search($fileMime, $validMimes, true);
  if($fileExt != 'zip' && $fileExt != 'rar')
    throw new RuntimeException('Invalid file format.');

NOTA: No olvide habilitar la extensión en su php.ini y reinicia tu servidor:

extension=php_fileinfo.dll

Sección de Reseñas y Valoraciones

Recuerda que tienes permiso de valorar este tutorial si diste con la contestación.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *