Tengo esta situación en la que tenemos archivos multimedia almacenados en un CDN global. Nuestra aplicación web está alojada en su propio servidor y luego, cuando se necesitan los recursos multimedia, se llaman desde la URL CDN. Recientemente tuvimos una página donde el usuario puede descargar archivos adjuntos, sin embargo, algunos de los tipos de archivos se abrieron en el navegador en lugar de descargar (como MP3). La única forma de evitar esto era especificar manualmente la respuesta HTTP para adjuntar el archivo, pero la única forma en que podía lograrlo era descargar el archivo de CDN a mi servidor y luego devolverlo al usuario, lo cual frustra el propósito de tenerlo. en el CDN global. En cambio, me pregunto si hay alguna solución del lado del cliente para esto.¿Hay alguna manera de 'simular' el clic derecho en el comando guardar como o forzar la descarga del archivo en el navegador con JavaScript?
EDIT: ¿Acabo de encontrar esto en alguna parte, aunque no estoy seguro de si funcionará correctamente en todos los navegadores?
<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: Bueno, tanto por esa idea ->Does execCommand SaveAs work in Firefox?
Estamos asumiendo que no puede configurar el CDN, solo cargarle archivos? Presumiblemente, el CDN examina el contenido para escribir encabezados HTTP, ¿puede manipularse de alguna manera? –
No creo que haya ninguna configuración como esa, pero comprobaré por si acaso que existe la posibilidad de establecer un método de entrega diferente para una determinada carpeta, por ejemplo. – BigOmega