napisałem narzędzie można wykorzystać do zapisania pliku do folderu pobrania lokalnej maszynie z niestandardowym pliku, jeśli to możliwe na komputerze klienta.
od tego pisania potrzebujesz chrom, firefox lub IE10 dla tej konkretnej możliwości, ale to narzędzie powraca do nienazwanego pobierania, jeśli to wszystko, co jest dostępne, ponieważ coś jest lepsze niż nic ...
do użytku:
i magicznego kodu:
function download(strData, strFileName, strMimeType) {
var D = document,
a = D.createElement("a");
strMimeType= strMimeType || "application/octet-stream";
if (navigator.msSaveBlob) { // IE10
return navigator.msSaveBlob(new Blob([strData], {type: strMimeType}), strFileName);
} /* end if(navigator.msSaveBlob) */
if ('download' in a) { //html5 A[download]
a.href = "data:" + strMimeType + "," + encodeURIComponent(strData);
a.setAttribute("download", strFileName);
a.innerHTML = "downloading...";
D.body.appendChild(a);
setTimeout(function() {
a.click();
D.body.removeChild(a);
}, 66);
return true;
} /* end if('download' in a) */
//do iframe dataURL download (old ch+FF):
var f = D.createElement("iframe");
D.body.appendChild(f);
f.src = "data:" + strMimeType + "," + encodeURIComponent(strData);
setTimeout(function() {
D.body.removeChild(f);
}, 333);
return true;
} /* end download() */
aktualizacja: dodano przyszłość odporne IE rutynowej
update2: checkout the evolved version on GitHub, który zawiera obsługę danychURL i Blob.
Wygląda dobrze, ale nie obsługuje żadnej przeglądarki przed 2012 rokiem. Sądzę, że to najlepsze, co możemy zrobić po pobraniu ze strony klienta. – styfle
Rzeczywiście, awaryjność dataURL działa na dość starych kopiach firefox i pewnym problemie typu MIME na starszych komputerach. Używałem tej funkcji przez lata, zanim dodałem IE10 i możliwości [pobierania] w zeszłym roku ... – dandavis
'BlobBuilder' został przestarzały. Zmień odpowiedź, aby zamiast tego użyć konstruktora 'Blob'. –