J'ai cette situation où nous avons des fichiers multimédias stockés sur un CDN global. Notre application Web est hébergée sur son propre serveur, puis lorsque les ressources multimédias sont nécessaires, elles sont appelées depuis l'URL de CDN. Récemment, nous avons eu une page où l'utilisateur peut télécharger des pièces jointes, mais certains types de fichiers s'ouvraient dans le navigateur au lieu de télécharger (comme MP3). Le seul moyen de contourner ce problème était de spécifier manuellement la réponse HTTP pour attacher le fichier mais la seule façon d'y parvenir était de télécharger le fichier de CDN sur mon serveur et de le renvoyer à l'utilisateur, ce qui va à l'encontre du but sur le CDN mondial. Au lieu de cela, je me demande s'il existe une solution côté client pour cela?Existe-t-il un moyen de «simuler» un clic droit sur la commande save-as ou de forcer le téléchargement du fichier dans le navigateur avec JavaScript?
EDIT: Je viens de trouver quelque part, même si je ne suis pas sûr que cela fonctionnera correctement dans tous les navigateurs?
<body>
<script>
function downloadme(x){
myTempWindow = window.open(x,'','left=10000,screenX=10000');
myTempWindow.document.execCommand('SaveAs','null','download.pdf');
myTempWindow.close();
}
</script>
<a href=javascript:downloadme('/test.pdf');>Download this pdf</a>
</body>
RE-EDIT: Eh bien, tant pour cette idée ->Does execCommand SaveAs work in Firefox?
Nous supposons que vous ne pouvez pas configurer le CDN, ne téléchargez que des fichiers. On peut supposer que le CDN examine le contenu pour écrire les en-têtes HTTP - cela peut-il être manipulé de quelque façon que ce soit? –
Je ne pense pas qu'il existe une telle configuration, mais je vais vérifier au cas où il y aurait un moyen de définir une méthode de livraison différente pour un certain dossier, par exemple. – BigOmega