¿Cuál es el tipo MIME de los archivos .csv?
El tipo MIME (tipo de medio) de los archivos de valores separados por comas con la extensión .csv es text/csv. Añade ; charset=utf-8 y, en el caso de Excel, un BOM UTF-8 al inicio del archivo para que los caracteres acentuados se muestren correctamente. Usa Content-Disposition: attachment; filename="data.csv" para forzar la descarga.
Cabecera Content-Type
Content-Type: text/csv; charset=utf-8
Los tipos basados en texto deben incluir un charset para que el navegador decodifique los caracteres correctamente.
Configuración del servidor
| Servidor | Configuración |
|---|---|
Nginx (mime.types o types {}) | text/csv csv; |
Apache (.htaccess) | AddType text/csv .csv |
IIS (web.config) | <mimeMap fileExtension=".csv" mimeType="text/csv" /> |
| Node.js / Express | res.type('csv') o res.setHeader('Content-Type', 'text/csv; charset=utf-8') |
| Amazon S3 | Establece Content-Type: text/csv en el objeto (metadatos) o pasa --content-type text/csv a aws s3 cp |
¿Deben comprimirse los archivos .csv?
Sí. Los archivos de valores separados por comas son texto, así que activar gzip o Brotli para text/csv normalmente reduce el tamaño de transferencia entre un 50–80 %. Asegúrate de que la lista de compresión de tu servidor incluya este tipo; verifícalo con el test de compresión web.
Por qué importa el tipo MIME
Los navegadores deciden qué hacer con una respuesta (renderizar, ejecutar, reproducir o descargar) a partir de la cabecera Content-Type, no de la extensión del archivo. Con X-Content-Type-Options: nosniff, un tipo incorrecto hace que las hojas de estilo y los scripts se bloqueen directamente. En las subidas de archivos, nunca confíes en el tipo que envía el cliente; comprueba el contenido del archivo (sus magic bytes) en el servidor.
Búsqueda de tipos MIME
Busca todas las extensiones de archivo y tipos MIME comunes, con cabeceras Content-Type listas para copiar.
Preguntas frecuentes
¿Cuál es el tipo MIME de .csv?
text/csv.¿Cómo configuro el Content-Type de .csv en Nginx?
text/csv csv; esté en el bloque types (normalmente en /etc/nginx/mime.types) y recarga Nginx.