Ответ 1
Я написал инструмент, который вы можете использовать для сохранения файла в папке с загрузкой на локальной машине с пользовательским именем файла, если это возможно на клиентской машине.
на момент написания этой статьи вам понадобится chrome, firefox или IE10 для этой конкретной возможности, но этот инструмент возвращается к загрузке без имени, если это все, что доступно, поскольку что-то лучше, чем ничего...
для вашего использования:
download(csv, "dowload.csv", "text/csv");
и магический код:
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() */
update: добавлена устойчивая к работе IE программа
update2: checkout развитая версия на GitHub, которая включает поддержку dataURL и Blob.