我被要求制作一个"下载"按钮,在文件的同一页面上下载textarea的内容,浏览器的"另存为..."对话框显示出来.复制/粘贴可以很好地完成工作,但这是一个"要求".
现在,我只是将textarea的内容发布到服务器上,然后将它们Content-disposition: attachment
打回来.有没有办法用客户端Javascript来做到这一点?
这可能是您正在寻找的:http: //thiscouldbebetter.wordpress.com/2012/12/18/loading-editing-and-saving-a-text-file-in-html5-using-javascrip/
它使用浏览器的下载对话框,但仅支持FF和Chrome,现在可能还有更多浏览器?
编辑:
如评论所述,我将嵌入文章中的代码:
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();
}
您可以尝试,window.location = "data:application/octet-stream,"+text
但这不提供一种机制,您可以通过它建议一个名称,并且IE对数据URI的最大长度有一个非常小的上限,这可能是一个问题.
通过小型嵌入式SWF文件,有一些javascript库可以做这种事情.例如这一个.
我在这里找到了一个简单的解决方案:http : //www.codingforums.com/archive/index.php/t-181561.html
My text area:
Download button:
希望它会有所帮助。