📁 Archivos de prueba
Archivos ficticios para pruebas de subida, valores límite y manejo de errores. Todos los archivos son gratuitos y sin registro. Se incluyen hashes MD5 / SHA-256 y comandos curl / wget / PowerShell.
Por formato
Archivos de imagen
PNG / JPG / WebP / GIF / BMP / TIFF / HEIC / AVIF / SVG / ICO
1KB a 100MB. Transparencia, animación, EXIF incluidos
100KB 〜 100MB
PDF de una página, múltiples páginas, grandes
ZIP
1MB 〜 100MB
Pruebas de compresión y archivos grandes
CSV
Con datos en japonés y diversas codificaciones
UTF-8 / Shift_JIS / BOM
JSON
10KB 〜 100MB
Formateado, minificado y con anidamiento profundo
Texto
TXT plano
Multilingüe, texto largo, varios fines de línea
Por uso
Pruebas de umbral
9.9MB / 10MB / 10.1MB / 24.9MB / 25MB / 25.1MB
Verifica los límites de Gmail, Discord, WordPress
Archivos rotos
Cabeceras corruptas, extensiones falsificadas, archivos truncados
Verifica validación de subida y manejo de errores
Codificación de caracteres
UTF-8 / UTF-8 BOM / Shift_JIS / EUC-JP / UTF-16
Verificación de mojibake y detección de codificación
Código de Salto de Línea
LF / CRLF / CR / mixto
Verifica compatibilidad de fines de línea Windows / Unix / Mac
📌 Incluido con cada archivo
- ✅ Tamaño exacto en bytes garantizado
- ✅ Hashes MD5 / SHA-256 publicados
- ✅ Ejemplos de comandos curl / wget / PowerShell
- ✅ Enlaces directos (vía CDN / descarga rápida)
Referencias relacionadas
📖 Dónde se suele tropezar
Archivos de relleno con contenido conocido, para ejercitar limites de subida y codigo de manejo de ficheros. Sin registro, descarga directa, cada uno con MD5 / SHA-256 y un comando curl listo. Que uno de estos pase no demuestra que tu manejo sea seguro. Aqui compruebas como se tratan tamanos y formatos; la resistencia a extensiones disfrazadas, bombas zip y estructuras internas malformadas requiere pruebas aparte.
| Caso | Qué ocurre | Qué hacer |
|---|---|---|
| Un archivo de 10 MB no llega como 10 MB | multipart/form-data anade un delimitador y cabeceras, asi que la peticion pesa unos cientos de bytes mas. Incrustado en JSON como base64 crece alrededor de un 33%. |
Usa los archivos de umbral de 9,9 / 10,0 / 10,1 MB al tantear un limite. Si hay base64 de por medio, calcula el limite real en unas tres cuartas partes. |
| Pasa en el navegador y falla en el servidor | El limite no esta en un solo sitio. client_max_body_size de nginx, upload_max_filesize y post_max_size de PHP, y tu propia validacion actuan de forma independiente. |
Gana el valor mas pequeno. Manten post_max_size igual o por encima de upload_max_filesize, y dimensionalo para el total cuando van varios ficheros a la vez. |
| Comprobar la extension deja pasar un archivo disfrazado | Un ejecutable renombrado a .png supera tanto la comprobacion de extension como la de Content-Type, porque ambos valores los elige quien envia. |
Juzga por los bytes iniciales. PNG es 89 50 4E 47, PDF 25 50 44 46, ZIP 50 4B 03 04; la tabla completa esta en la referencia de magic bytes. |
| El tamano cabe pero la peticion expira | Aun dentro del limite de tamano, una conexion lenta tarda en transferir. Lo que corta la peticion no es el tope de tamano sino un tope de tiempo. | Sube a la vez client_body_timeout y fastcgi_read_timeout de nginx junto con max_execution_time y max_input_time de PHP. Subir solo uno deja que te corte el mas corto. |
| Nada se prueba contra un archivo corrupto | Las conexiones caidas y los errores de transferencia hacen que lleguen archivos truncados y cabeceras rotas de forma rutinaria. Muchas implementaciones lanzan una excepcion ahi y se la tragan. | Pasa primero un archivo roto a proposito y comprueba hasta el mensaje que ve el usuario. |
Aunque pase cada archivo de aqui, el analisis antivirus, el agotamiento de disco con subidas simultaneas y los limites de tu almacenamiento de objetos son cuestiones aparte. Poder aceptar algo hasta el limite no es lo mismo que deber aceptarlo.