2011-10-14 10 views
8

Vorrei consentire all'utente di scaricare direttamente un file con un solo clic. C'è comunque un problema quando si tratta di tipi di meme conosciuti come html, audio, video, ecc. Idealmente, mi piacerebbe attivare un prompt di download per i file audio/video. In definitiva, mi piacerebbe farlo anche per i documenti HTML. L'idea principale è semplificare agli utenti il ​​download dei file senza chiedere loro di navigare nel menu di scelta rapida.È possibile avviare un prompt di download nel browser per tipi mime riconosciuti utilizzando solo JavaScript (approccio lato client)?

Penso ad esempio a persone che non sono veramente a proprio agio con un computer e le sue funzioni principali. Queste persone preferiranno sicuramente un modo migliore di "salvare come".

Il motivo per cui sono alla ricerca di una soluzione JavaScript è che l'approccio PHP funziona solo se si è in un contesto di un sito Web. Ogni volta che ci si trova all'interno di un plug-in o contesto di script iniettato (ad esempio lo sviluppo di un plug-in per Firefox, Chrome o Safari), è possibile evitare di chiedere una risposta lato server.

Ho provato a raggiungere questo con window.open() e document.execCommand("saveAs",.... Funziona, anche se è glitchy e non riesce per i file enormi.

Quindi, ho provato Downloadify che non funziona in tutte le situazioni.

C'è un puro javascript, nessun modo per avviare un prompt di download in modo che l'utente possa scaricare direttamente un file utilizzando un semplice clic sinistro?

Qualsiasi aiuto è apprezzato.

risposta

18

C'è un nuovo attributo download in HTML5 con cui è possibile annotare collegamenti. Indica al browser che la risorsa deve essere scaricata anziché navigata. Al momento, funziona solo in Chrome, ma fa parte delle specifiche HTML e, si spera, verrà presto adottato da altri browser.

Demo: http://html5-demos.appspot.com/static/a.download.html Maggiori informazioni: http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download

+0

@ebidel I vecchi browser non supportano HTML5. Ad esempio, IE 8 utilizza widley e non supporta HTML5. Qualche soluzione alternativa? – Oliver

+0

Che ne dici di gestire gli errori http come 404? –

+1

Anche Firefox 44.0.2 non lo accetta. –

0

È possibile utilizzare <a href="example" download>. Questo è HTML5 e funziona con Chrome, Firefox e Edge (ma non con Internet Explorer, nemmeno le versioni moderne).

0

Se qualcuno raggiunge questa domanda oggi la soluzione migliore è

<a href="example" download target="_blank"> 

Se il browser supporta l'attributo HTML5 download inizierà il download del file, altrimenti (in caso di Internet Explorer e vecchi browser) il link aprirà un'altra finestra con il file da scaricare.

Problemi correlati