Estoy desarrollando una secuencia de comandos de carga php simple, y los usuarios solo pueden cargar archivos ZIP y RAR.
¿Qué tipos de MIME debo usar para verificar $_FILES[x][type]
? (una lista completa por favor)
Gracias..
php
zip
mime-types
rar
mrdaliri
fuente
fuente
Respuestas:
Las respuestas de freedompeace, Kiyarash y Sam Vloeberghs:
También verificaría el nombre del archivo. A continuación, le mostramos cómo 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 todavía no será 100% seguro, pero probablemente sea lo suficientemente bueno.
Pero incluso WinRAR detecta archivos no RAR como archivos SFX:
fuente
application/x-zip-compressed
zip
orar
nada. De acuerdo con las especificaciones de WC3, esto se interpretará como: "Prefiero unapplication/zip
|application/x-rar-compressed
tipo de contenido, pero si no puede entregar esto, unapplication/octet-stream
(flujo de archivos) también está bien".multipart/x-zip
ser válido en el mundo ? No es de varias partes. La lista de SitePoint contiene muchos tipos MIME inexactos y está lejos de estar completa. El registro oficial de tipos de medios de la IANA no está (ni probablemente lo estará) 100% completo.Para subir:
Puede encontrar una lista oficial de los tipos mime en la Autoridad de Números Asignados de Internet (IANA) . Según su
Content-Type
encabezado de lista parazip
esapplication/zip
.El tipo de medio para
rar
archivos no está registrado oficialmente en IANA, pero el valor no oficial de tipo mime comúnmente utilizado sí lo esapplication/x-rar-compressed
.application/octet-stream
significa tanto como: "Te envío una secuencia de archivos y el contenido de esta secuencia no está especificado" (por lo que es cierto que puede ser un archivozip
orar
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
encabezado. 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 mime en el servidor.Para descargar:
Si desea descargar un
zip
archivo y nada más, solo debe establecer un únicoAccept
valor de encabezado. Cualquier valor adicional establecido se utilizará como reserva en caso de que el servidor no pueda satisfacerlo en elAccept
encabezado tipo mime solicitado.De acuerdo con las especificaciones WC3 esto:
se interpretará como: "Prefiero un
application/zip
tipo mime, pero si no puede entregar esto, unapplication/octet-stream
(una secuencia de archivos) también está bien".Entonces solo uno:
Le garantizará un
zip
archivo (o una406 - Not Acceptable
respuesta en caso de que el servidor no pueda satisfacer su solicitud).fuente
No debe confiar
$_FILES['upfile']['mime']
, verifique el tipo MIME usted mismo. Para ese propósito, puede usar lafileinfo
extensión , habilitada por defecto a partir de PHP 5.3.0.NOTA: No olvide habilitar la extensión en su
php.ini
y reiniciar su servidor:fuente
En una pregunta vinculada , hay un código Objective-C para obtener el tipo mime para una URL de archivo. He creado una extensión Swift basada en ese código Objective-C para obtener el tipo mime:
fuente
Como la extensión puede contener más o menos de tres caracteres, lo siguiente probará una extensión, independientemente de su longitud.
Prueba esto:
para buscar todos los caracteres después del último '.'
fuente