
Originariamente inviata da
techno
Ma certo che il download e legato ad un mio sito a me interessa sapere se effettivamente sta scaricando il file
Un modo potrebbe essere quello di scaricare il file tramite ajax e quando hai ottenuto il file (in base64 o direttamente in array di byte) fai partire il download. In questo modo sei certo che l'utente ha scaricato qualcosa. Se poi l'ha salvata non è dato saperlo...
Un esempio rapido in codice (solo lato client ovviamente):
codice:
var saveFile = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, name) {
var blob = new Blob(data, { type: "octet/stream" }),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = name;
a.click();
window.URL.revokeObjectURL(url);
};
}());
//se arriva in base64: (la stringa rappresenta il file)
var fileB64 = 'UEsDBAoAAAAAAIh9b0kAAAAAAAAAAAAAAAAKAAAARFMzMjMyUlR..........';
//trasformi in array di byte (o se arriva gia come array di byte salti questo passaggio)
var binFile = window.atob(fileB64); var bytes = new Uint8Array(binFile.length);
for (var i = 0; i < binFile.length; i++) {
var ascii = binFile.charCodeAt(i);
bytes[i] = ascii;
}
//fai aprire la finestra di download
saveFile([bytes], 'test.zip');