C'è un modo per 'simulare' fare clic destro Salva-come comando o forza download del file nel browser con JavaScript?

StackOverflow https://stackoverflow.com/questions/3711526

Domanda

Ho questa situazione in cui abbiamo i file multimediali archiviati su una CDN globale. La nostra applicazione web è ospitato su di essa la propria server e quindi quando sono necessarie le risorse multimediali vengono chiamati dal URL CDN. Recentemente abbiamo avuto una pagina in cui l'utente può scaricare i file allegati, tuttavia alcuni dei tipi di file aprivamo nel browser invece di scaricare (come MP3). L'unico modo per aggirare questo è stato quello di specificare manualmente la risposta HTTP per allegare il file, ma l'unico modo ho potuto raggiungere questo obiettivo è stato quello di scaricare il file da CDN al mio assistente e poi alimentarlo di nuovo per l'utente, che sconfigge lo scopo di averlo sulla CDN globale. Invece mi chiedo se c'è qualche soluzione lato client per questo?

EDIT: appena trovato questo da qualche parte, anche se non sono sicuro se funzionerà proprio in tutti i browser

<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: Oh, bene, tanto per l'idea -> lavoro non execCommand SaveAs in Firefox?

È stato utile?

Soluzione

La vostra CDN consente di specificare il intestazioni HTTP? Cloudfront fa, per esempio.

Altri suggerimenti

Ho trovato una soluzione facile a questo che ha funzionato per me. Aggiungere un parametro URL al nome del file. Ciò ingannare il browser in bypassando è costruito nelle mappature di file. Per examaple, invece di http://mydomain.com/file.pdf , impostare il lato client Link Up per puntare a http://mydomain.com/file.pdf ? (Aggiunto un punto interrogativo)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top