En y repensant, je pense que la solution est l’inverse : la tâche uploads:migrate_to_s3 devrait être conditionnée par if !FileHelper.is_supported_media?(name). Il n’a pas de sens d’ajouter l’en-tête content-disposition: attachment; filename=X pour les vidéos et les fichiers audio. Vous diffusez ces fichiers directement dans un message Discourse, vous ne les téléchargez pas ?
Donc, ce que nous voudrions, c’est :
Aucun en-tête content-disposition attachment
- Image
- Vidéo
- Audio
En-tête content-disposition attachment avec le nom d’origine
- Tous les autres fichiers joints/téléchargements (PDF, TXT, CSV, etc.)
Si je passe à côté de quelque chose, n’hésitez pas à ajouter plus d’informations ou d’exemples.