Croyez-moi, j’ai passé des jours à élucider ce problème, et cela m’a semblé étrange aussi. Cependant, définir content-disposition: attachment; filename=X pour tous les fichiers multimédias sauf les images imite parfaitement la façon dont les fichiers multimédias sont actuellement servis depuis le stockage local.
En bref, NON ! Je peux les diffuser via une onebox si nécessaire, mais le lien de téléchargement direct [media_file](chemin_vers_fichier_média) — où le chemin est soit local, soit S3 — devrait télécharger le fichier en conservant son nom d’origine, exactement comme cela se passe avec le stockage local (et pour les fichiers migrés vers S3).
Or, cela n’est soudainement plus possible pour les téléversements directs vers S3 : le lien [media_file](chemin_S3_vers_fichier_média) diffuse le fichier multimédia dans un nouvel onglet (ce qui n’est pas nécessaire, car c’est ce que fait la onebox), et lorsqu’on tente de le télécharger depuis les contrôles du lecteur, il perd également son nom d’origine.
Je m’attendrais à ce que les fichiers hébergés localement et sur S3 se comportent de la même manière, n’est-ce pas ? Avec votre proposition, la fonctionnalité serait complètement inversée pour les téléversements hébergés sur S3, non seulement pour les nouveaux, mais aussi pour ceux qui ont été migrés.
Voici un dossier détaillé expliquant pourquoi je pense que ma proposition est correcte (c’est-à-dire qu’elle conserve la même fonctionnalité pour les téléversements hébergés localement et sur S3) :
Fichiers hébergés localement
Je possède un vaste dépôt de plus de 5 000 fichiers audio (discours) allant de 1 à 10 Mo, pour un total d’environ 40 Go, qui sont actuellement hébergés sur le stockage local et sont en cours de transfert vers S3 (c’est intentionnel, je ne souhaite pas qu’ils soient hébergés sur un service tiers). Cela fonctionne déjà très bien en termes de performances, mais il est maintenant logique de migrer vers S3 en raison de la hausse des coûts de stockage et de la possibilité d’utiliser un CDN avec S3.
Ces fichiers sont optimisés pour leur taille et ne sont pas destinés à être diffusés, mais plutôt téléchargés et écoutés localement (pour les clients ayant une bande passante ou une connectivité limitée). Les fichiers sont téléversés en masse, puis référencés dans le message brut à l’aide de liens générés à partir de leurs valeurs SHA1 respectives, via : [dl_link](https://discourse.forum.tld/uploads/default/original/3X/0/1/0123..sha1.mp3). Ils peuvent être téléchargés en conservant leur nom d’origine en cliquant sur le lien direct vers le fichier (voir l’exemple ici).
Si, en revanche, ces liens étaient oneboxed, ils pourraient toujours être diffusés directement depuis le serveur Discourse (et également téléchargés depuis les contrôles du lecteur, toujours avec le nom d’origine).
Fichiers migrés vers S3
Lorsque les téléversements sont migrés du stockage local vers S3 à l’aide de la commande uploads:migrate_to_s3, deux choses se produisent :
content-disposition: attachment; filename=X est défini pour tous les téléversements sauf les images
- les liens locaux directs
[dl_link](https://discourse.forum.tld/uploads/default/original/3X/0/1/0123..sha1.mp3) dans les messages bruts sont remplacés par des liens S3 [dl_link](https://cdn_url/uploads/original/3X/0/1/0123..sha1.mp3)
Cela imite à tous égards les téléversements hébergés localement (liens de téléchargement avec noms d’origine, ainsi que la onebox).
Fichiers nouvellement téléversés sur S3
content-disposition: attachment; filename=X n’est pas défini pour tous les fichiers multimédias
- les fichiers nouvellement téléversés sont référencés par une URL courte dans le texte brut, mais les liens cuisinés pointent toujours directement vers
https://cdn_url/uploads/original/3X/0/1/0123..sha1.mp3
- cliquer sur le lien d’URL courte ou sur le lien S3 inséré manuellement
[dl_link](https://cdn_url/uploads/original/3X/0/1/0123..sha1.mp3) ouvre le fichier dans un nouvel onglet au lieu de le télécharger.
Comme content-disposition n’est pas défini, cela diffère désormais de la façon dont les fichiers multimédias sont servis depuis le stockage local (la onebox fonctionne toujours, mais les liens de téléchargement avec les noms d’origine ne sont plus disponibles).
Si vous avez besoin d’informations supplémentaires, n’hésitez pas à me le faire savoir.