Saltar al contenido

Referencia rápida de formato de archivo para desarrolladores

Categoría: Referencia

En el desarrollo de aplicaciones web, el conocimiento de formatos de archivo es fundamental para validación de archivos, determinación de tipos MIME y diseño de límites de carga. Este artículo recopila una lista de formatos de archivo comúnmente utilizados en el desarrollo. Márquelo como favorito y úselo como referencia rápida que puede consultar en cualquier momento.

Matriz de uso de formatos principales Formatos por categoría y casos de uso Imagen JPEG / JPG PNG (alfa) WebP (para web) AVIF (nueva gen.) SVG (vectorial) GIF (anim. antigua) Documento PDF (reparto) DOCX (Word) XLSX (Excel) PPTX (PowerPoint) ODT (OpenDoc) RTF (compat.) Archivo ZIP (estandar) TAR.GZ (Unix) 7Z (alta comp.) RAR (de pago) XZ (LZMA) BZIP2 (antiguo) Texto/Datos JSON (API) CSV (hojas) XML (estructura) YAML (config.) TOML (config.) TXT (simple)
Fig 1: Formatos principales en 4 categorías

Formato de imagen

Extensión de Archivo Tipo MIME Compresión Transparencia Casos de uso principales
.png image/png Sin pérdida Compatible Capturas de pantalla, logotipos, iconos
.jpg / .jpeg image/jpeg Con pérdida No compatible Fotos, miniaturas
.gif image/gif Sin pérdida Compatible (1bit) Animación, diagramas simples
.webp image/webp Ambos Compatible Uso general en web (candidato sucesor de PNG)
.avif image/avif Ambos Compatible Imagen web de próxima generación
.svg image/svg+xml Ninguno (XML) Compatible Imágenes vectoriales, iconos

Nota: SVG está basado en XML y conlleva riesgo de XSS (Cross-Site Scripting). Es peligroso mostrar directamente SVG cargados por usuarios. Siempre realiza sanitización.

Formato de documento

Extensión de Archivo Tipo MIME Estructura interna Casos de uso principales
.pdf application/pdf Binario Documentos para imprimir, formularios
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document ZIP(XML) Documento de Word
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ZIP(XML) Hoja de cálculo de Excel
.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation ZIP(XML) Presentación de PowerPoint

Formato de archivo

Extensión de Archivo Tipo MIME Características Puntos a tener en cuenta
.zip application/zip Más ampliamente distribuido, soporte estándar del SO Nombres de archivo en japonés corrupto (UTF-8 vs CP932)
.tar.gz application/gzip Estándar Unix/Linux Puede ser necesaria una herramienta de extracción en Windows
.7z application/x-7z-compressed Alta tasa de compresión Se requiere una herramienta dedicada (7-Zip)
.rar application/vnd.rar Compatible con archivos divididos Formato propietario

Formatos de texto y datos

Extensión de Archivo Tipo MIME Caso de uso Problemas comunes
.csv text/csv Intercambio de datos, Importación/Exportación Codificación de Caracteres, Código de Salto de Línea y BOM
.json application/json Comunicación de API, archivos de configuración UTF-8 requerido (RFC 8259)
.xml application/xml Archivos de configuración e intercambio de datos Discrepancia con la declaración de codificación
.txt text/plain Registros, notas, README La detección automática de codificación de caracteres es inestable

Validación de tipo MIME

Al implementar la funcionalidad de carga de archivos, es importante validar no solo la extensión del archivo sino también el tipo MIME. Sin embargo, dado que el tipo MIME puede ser falsificado en el cliente, también use verificaciones de magic byte (encabezado de archivo) en el servidor.

// PHP でのマジックバイトによる判定
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->file($_FILES['upload']['tmp_name']);

$allowedTypes = [
    'image/png',
    'image/jpeg',
    'image/webp',
    'application/pdf',
];

if (!in_array($mimeType, $allowedTypes, true)) {
    throw new Exception('許可されていないファイル形式です');
}
// Node.js での file-type ライブラリを使った判定
import { fileTypeFromFile } from 'file-type';

const type = await fileTypeFromFile('upload.png');
console.log(type);
// { ext: 'png', mime: 'image/png' }

Descargar archivos de prueba

Para probar el procesamiento de validación y la funcionalidad de carga de cada formato, utilice los archivos de prueba de DevLab.

Resumen

Una comprensión correcta de los formatos de archivo es la base para implementar funcionalidad de carga segura y robusta. Valide usando tanto tipos MIME como bytes mágicos, no solo extensiones de archivo, para realizar una validación adecuada. Recomendamos marcar esta referencia para que pueda consultarla en cualquier momento durante el desarrollo.

❓ Preguntas frecuentes

¿Por qué hay que validar el tipo MIME al subir archivos?
Una extensión se falsifica en un segundo, así que comprobarla sola no es seguridad. Valida el tipo MIME en el servidor con finfo o mime_content_type() y combínalo con una comprobación de magic bytes en la cabecera del archivo.
¿Qué hay que vigilar al permitir subidas de SVG?
SVG es XML, así que conlleva riesgo de XSS. Nunca muestres tal cual un SVG subido por un usuario: sanitízalo antes, eliminando etiquetas script, manejadores de eventos y cualquier contenido ejecutable.
¿Cómo son por dentro los documentos de Office (docx, xlsx, pptx)?
docx, xlsx y pptx son archivos ZIP que contienen ficheros XML. Sus tipos MIME son las largas cadenas application/vnd.openxmlformats-officedocument, y tu lista blanca debe incluir esos valores exactos.