Error de tubería rota al subir a un clon de S3, un PDF con un nombre que contiene é, ï, etc.

Última versión de la app, reconstruida hace una hora; no puedo replicarlo en meta. Asumo que tiene que ver con la localización en francés.

Tengo un error de tubería rota al intentar subir un PDF llamado laïcité.pdf, pero el mismo archivo renombrado como laicite.pdf funciona bien.
laïcité.jpg también funciona correctamente.

Un archivo llamado décroissance.pdf genera un error diferente: “se ha producido un error interno. inténtalo de nuevo.” :face_with_raised_eyebrow:

PD: No estoy seguro de si es relevante, pero también uso un clon de S3 (Scaleway), que también me dio un error de tubería rota al ejecutar rake uploads.migrate_to_s3, aunque parece no estar relacionado.

PDP: Sí… podría estar relacionado con la subida al clon de S3. Verifiqué que tengo una subida de hace tres semanas con un acento, justo antes de habilitar la opción de subida a S3 :roll_eyes:

1 me gusta

Línea 62 de discourse/lib/file_store/s3_store.rb at main · discourse/discourse · GitHub

options[:content_disposition] = "attachment; filename=\"#{filename}\""

La disposición de contenido debería quizás formatearse así:

options[:content_disposition] = ActionDispatch::Http::ContentDisposition.format(
        disposition: "attachment", filename: upload.filename
      )

como en

De ser así, quizás también estas content_disposition:

4 Me gusta

Creo que tienes razón, este tipo de problemas con los nombres de archivos siempre se me escapan. Debería poder enviar un PR para solucionarlo mañana. ¡Gracias por el informe!

4 Me gusta

Arreglando el problema aquí, que se implementará pronto. Probé con el nombre del archivo PDF anterior y funciona perfectamente :ok_hand:. ¡La corrección se implementará pronto!

https://github.com/discourse/discourse/pull/10108

3 Me gusta