Javascript 客户端数据保存到硬盘驱动器

Javascript 客户端数据保存到硬盘驱动器,javascript,html,web,Javascript,Html,Web,我需要通过单击按钮在html页面框架中保存一些表内容。之后,在“另存为”对话框中,我想选择一个文件名并将其保存到某个地方。。问题是如何做到这一点。我至少看到两种方法。第一个是服务器端,第二个是客户端。出于某些原因,我更喜欢使用客户端方法。但如何做到这一点呢?你更喜欢哪种技术?当然,它需要支持最流行的浏览器。不知何故,我需要向用户显示“另存为”对话框,以允许用户选择文件位置。Short: 这在客户端是不可能的 长: 使用标准HTML5技术,您只能使用文件API读取文件。真正以编程方式将文件保存到用

我需要通过单击按钮在html页面框架中保存一些表内容。之后,在“另存为”对话框中,我想选择一个文件名并将其保存到某个地方。。问题是如何做到这一点。我至少看到两种方法。第一个是服务器端,第二个是客户端。出于某些原因,我更喜欢使用客户端方法。但如何做到这一点呢?你更喜欢哪种技术?当然,它需要支持最流行的浏览器。不知何故,我需要向用户显示“另存为”对话框,以允许用户选择文件位置。

Short:

这在客户端是不可能的

长:

使用标准HTML5技术,您只能使用
文件API
读取文件。真正以编程方式将文件保存到用户硬盘的唯一方法是使用Microsoft的
ActiveX
技术(这种技术很难看,只在IE中有效)

解决方案:


在您的情况下,我建议提供一个按钮,使您的应用程序创建具有必要格式的文档,并将其作为下载文件发送给用户。

如果我理解您的意图,可以尝试将其编码为base64数据URL,然后将其设置为要另存为的链接的值。您可以使用Javascript中的btoa()本机函数获取字符串,将其编码为base64,并要求用户右键单击并将链接另存为

<script LANGUAGE="Javascript">
function initialize(berliner) {
document.getElementById("aharef").href="data:text/plain;base64,"+btoa(berliner);
}
</script>
<a href="javascript:" id="aharef">Just an example link. Right click and save as to save when ready.</a>
<input type="button" value="Get ready." onClick="initialize('I am a jelly donut.');">

函数初始化(berliner){
document.getElementById(“aharef”).href=“data:text/plain;base64”+btoa(柏林);
}

完善tomysshadow的答案(我投了赞成票):


函数初始化(txt){
document.getElementById(“theLink”).href=“data:text/plain;base64,”+btoa(txt);
}
有了这段代码,在下载之前不需要准备下载。您也不需要右键单击并选择“另存链接为”。您可以在代码中指定文件名。我只在Firefox上试过


在这里试试

谢谢你的回答!我会尝试使用这种方法,看看它是什么样子)谢谢你的更新!我将保留服务器端解决方案,以防万一:)
<script LANGUAGE="Javascript">
  function initialize(txt) {
    document.getElementById("theLink").href="data:text/plain;base64,"+btoa(txt);
  }
</script>
<a 
  id="theLink"
  download="myFile.txt" 
  href="javascript:" 
  onclick="initialize('Here is the contents of the file');" 
>Save</a>