Erreur de tuyau brisé lors du téléchargement vers un clone S3, un PDF avec un nom contenant é, ï, etc.

Dernière version de l’application, reconstruite il y a une heure, je ne parviens pas à reproduire le problème sur Meta ; je suppose que cela est lié à la localisation française.

J’obtiens une erreur de pipe cassé lorsque j’essaie de télécharger un fichier PDF nommé laïcité.pdf, alors que le même fichier renommé laicite.pdf fonctionne parfaitement.

laïcité.jpg fonctionne également sans problème.

Un fichier nommé décroissance.pdf provoque une erreur différente : « Une erreur interne est survenue. Veuillez réessayer. » :face_with_raised_eyebrow:

PS : Je ne sais pas si c’est pertinent, mais j’utilise également un clone S3 (Scaleway) qui m’a aussi renvoyé une erreur de pipe cassé lorsque j’ai exécuté la commande rake uploads.migrate_to_s3, mais cela semble sans rapport.

PPS : Oui… cela pourrait être lié au téléchargement vers le clone S3. J’ai vérifié et j’ai un téléchargement vieux de trois semaines avec un accent, juste avant l’activation de l’option de téléchargement S3 :roll_eyes:

1 « J'aime »

Ligne 62 de discourse/lib/file_store/s3_store.rb at main · discourse/discourse · GitHub

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

La disposition de contenu devrait peut-être être formatée ainsi :

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

comme dans

Si c’est le cas, peut-être aussi pour ces content_disposition :

4 « J'aime »

Je pense que vous avez raison, ce genre de problème avec les noms de fichiers m’échappe toujours. Je devrais pouvoir soumettre une PR pour corriger cela demain. Merci pour le signalement !

4 « J'aime »

Correction en cours d’intégration ici, qui arrivera bientôt. Testé avec le nom de fichier PDF ci-dessus, et tout fonctionne parfaitement :ok_hand:. La correction sera intégrée très bientôt !

3 « J'aime »