Skip to content

Forzar descarga de archivos de hoja de cálculo/CSV servidos por token en Myfiles - #2014

Closed
abdedarghal111 wants to merge 1 commit into
NeoRazorX:masterfrom
abdedarghal111:myfilestoken-force-download
Closed

Forzar descarga de archivos de hoja de cálculo/CSV servidos por token en Myfiles#2014
abdedarghal111 wants to merge 1 commit into
NeoRazorX:masterfrom
abdedarghal111:myfilestoken-force-download

Conversation

@abdedarghal111

Copy link
Copy Markdown
Contributor

Resumen

Myfiles solo forzaba Content-Disposition: attachment para extensiones consideradas peligrosas (svg, xml, html...), dejando que el navegador decidiera cómo mostrar el resto. Esto provoca que archivos como .xlsx o .csv servidos mediante un token de MyFilesToken se abran/previsualicen en el navegador en lugar de descargarse.

Cambios

  • MyFilesToken: nuevo método estático shouldForceDownload(string $path): bool, que determina si la extensión del archivo (csv, ods, xls, xlsx) debe forzar la descarga.
  • Myfiles::run(): la condición que decide si enviar Content-Disposition: attachment ahora también consulta MyFilesToken::shouldForceDownload(), además de su propia lista de extensiones peligrosas.

… token

MyFilesToken ahora expone shouldForceDownload() para marcar extensiones
(csv, ods, xls, xlsx) que deben servirse con Content-Disposition: attachment
en lugar de dejar que el navegador decida cómo mostrarlas. Myfiles consulta
este método además de su propia lista de extensiones peligrosas.
@NeoRazorX

Copy link
Copy Markdown
Owner

¡Muchas gracias por el PR y por detectar el problema, @abdedarghal111! 🙏

Tras analizarlo, el caso real es solo el CSV: las hojas de cálculo (xlsx, xls, ods) ya se descargan siempre porque los navegadores no tienen renderizador nativo para esos MIME. Y para el CSV vamos a aplicar la descarga forzada a todos los archivos servidos (con o sin token), así que basta con una línea en el shouldForceDownload() que ya existe en el controlador Myfiles, sin necesidad de añadir una API nueva en MyFilesToken.

Cierro este PR y aplicamos esa versión simplificada directamente. ¡Gracias de nuevo por la contribución!

@NeoRazorX NeoRazorX closed this Aug 7, 2026
NeoRazorX added a commit that referenced this pull request Aug 8, 2026
Los navegadores muestran los csv como texto plano en lugar de
descargarlos. Se añade la extensión csv a shouldForceDownload(),
aplicable a todos los archivos servidos, con o sin token.

Cierra #2014

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants