function saveTextAsFile(textToWrite, fileNameToSaveAs)
{
var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
var downloadLink = document.createElement("a");
downloadLink.download = fileNameToSaveAs;
downloadLink.innerHTML = "Download File";
if (window.webkitURL != null)
{
// Chrome allows the link to be clicked
// without actually adding it to the DOM.
downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
}
else
{
// Firefox requires the link to be added to the DOM
// before it can be clicked.
downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
downloadLink.onclick = destroyClickedElement;
downloadLink.style.display = "none";
document.body.appendChild(downloadLink);
}
downloadLink.click();
}
<textarea placeholder="Enter text to download" id="dload-txt"></textarea><br/>
<input placeholder="Enter file name to download as" id="dload-fn"/><br/><br/>
<button id="download">Download</button>
9条答案
按热度按时间ecbunoof1#
这可能是你正在寻找的:http://thiscouldbebetter.wordpress.com/2012/12/18/loading-editing-and-saving-a-text-file-in-html5-using-javascrip/
它使用浏览器的下载对话框,但只支持FF和Chrome,也许现在更多的浏览器?
个字符
vc6uscn92#
我在这里找到了一个简单的解决方案:https://codepen.io
字符串
希望能有帮助。
vqlkdk9b3#
您可以尝试
window.location = "data:application/octet-stream,"+text
,但它没有提供一个机制,通过它可以建议一个名称,而且IE对数据URI的最大长度有一个非常小的上限,这可能是一个问题。bd1hkmkf4#
有一些JavaScript库可以通过小的嵌入式SWF文件来完成这种事情。例如this one。
chy5wohz5#
完全可以使用HTML5
saveAs
函数的跨浏览器JavaScript实现:https://github.com/koffsyrup/FileSaver.js如果你想做的只是保存文本,那么上面的脚本在所有浏览器(包括所有版本的IE)中都可以工作,不需要SWF。
ltskdhd16#
您可以使用
data:
URI * 和 * 给予它一个文件名,同时仍然下载文本。试试这个:这适用于大多数浏览器。
它所做的是从文本区域和输入中获取必要的数据,创建一个包含
href
到data:text/plain;UTF-8,<textarea data>
的链接,并使用<input>
元素设置的名称设置download
属性。然后单击链接,将下载文本。这里唯一不兼容所有浏览器的东西是:
data:
用于将数据存储为链接的URI。data: URIs on CanIUseclick()
函数单击链接。HTMLElement.click() on CanIUse的download
属性表示下载。download attribute on CanIUse的所以基本上:
否则,这适用于所有主流浏览器,并且不需要任何
Blob
对象。Blob construction on CanIUse的
Blob URLs on CanIUse的
xkrw2x1b7#
基于@Cyrlop的答案和https://stackoverflow.com/a/41948732/3096687,这给出了一种指定文件名的方法:
字符串
如果你不介意在JavaScript中包含更多的字节,@Superphonic的解决方案可能更好。
t8e9dugd8#
通过创建一个框架,在那里写入内容,然后在IE中调用
document.execCommand('saveas', ...)
和Mozilla中的nsIFilePicker,这可能是可能的,但我相信这需要一些特殊的特权(比如成为浏览器本身的一部分)。klh5stk19#
简短回答:不可能。您必须将其POST到服务器,服务器的响应可以是“Content-disposition:依恋”。