In primo luogo, un avviso: application/csv
non è un valid MIME type, quindi il fatto che "funzioni" per voi in questo caso è puramente una stranezza di implementazione che potrebbe cambiare molto in futuro. (Per esempio, Safari mostraapplication/octet-stream
, che mi aspetto per il download.)
HTML5 ha un new <a download="file.name">
attribute. Ciò impone al browser di scaricare il file sul disco; utilizza il valore dell'attributo come nome file predefinito. Funziona in combinazione con un URI di dati o un URI blob. (Demo)
Tuttavia, al momento è supportato solo da Chrome (14+). Safari 5.1 ignora l'attributo.
Una possibile alternativa è quella di utilizzare il Filesystem API, ma che ti dà una cartella sandbox con cui lavorare. Non è possibile — ad esempio — salvare un file direttamente nella cartella Documenti dell'utente. Invece, è possibile scrivere un file per la sandbox e quindi reindirizzare su file sul nuovo filesystem
schema:
location.assign('filesystem:http://example.com/temporary/somefile.csv');
Questo dovrebbe richiamare meccanismo di download del programma utente (! Con il nome del file a destra), ma non ho ancora testato questo , quindi è possibile che Safari mostrerà comunque il file.
Il problema è: sembra che Safari non supporti anche l'API di File System. Http: //caniuse.com/#feat=filesystem – user3682091