2010-09-14 9 views
6

Ho questa situazione in cui sono memorizzati file multimediali su un CDN globale. La nostra app Web è ospitata sul proprio server e quindi quando le risorse multimediali sono necessarie vengono chiamate dall'URL CDN. Recentemente abbiamo avuto una pagina in cui l'utente può scaricare gli allegati di file, tuttavia alcuni tipi di file si aprivano nel browser anziché scaricare (come MP3). L'unico modo per farlo era specificare manualmente la risposta HTTP per allegare il file, ma l'unico modo per ottenerlo era scaricare il file da CDN sul mio server e poi restituirlo all'utente, il che vanifica lo scopo di averlo sul CDN globale. Invece mi chiedo se c'è qualche soluzione client side per questo?Esiste un modo per "simulare" il comando salva-come con il tasto destro del mouse o forzare il download del file nel browser con JavaScript?

EDIT: Ho trovato questo da qualche parte, anche se non sono sicuro che funzionerà correttamente 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 ->Does execCommand SaveAs work in Firefox?

+1

Supponiamo che non sia possibile configurare il CDN, caricare solo file su di esso? Presumibilmente il CDN esamina il contenuto per scrivere intestazioni HTTP - può essere manipolato in qualche modo? –

+0

Non penso che ci sia una configurazione del genere, ma controllerò nel caso in cui si abbia la possibilità di impostare un metodo di consegna diverso per una determinata cartella, ad esempio. – BigOmega

risposta

1

La vostra CDN consentono di specificare le intestazioni HTTP? Ad esempio, il cloud cloud Amazon.

+0

Guardando a questo punto, su Amazon sei in grado di specificare diverse intestazioni HTTP per diverse directory? Non potevo fare un cambiamento onnicomprensivo come quello o altre cose sarebbero state infrante. – BigOmega

+0

Sembra che sia per file, ma esiste un'API per apportare modifiche più ampie (e client). Non lo uso, ma l'ho cercato ed è possibile aggiungere intestazioni HTTP personalizzate per file. –

0

Ho trovato una soluzione facile a questo che ha funzionato per me. Aggiungi un parametro URL al nome del file. Ciò ingannerà il browser in modo da evitare le mappature dei file incorporate. Per esempio, anziché http://mydomain.com/file.pdf, impostare il collegamento lato client fino a http://mydomain.com/file.pdf? (aggiunto un punto interrogativo)

+0

dovrebbe essere nel commento – Pawan

Problemi correlati