允许用户将html列表的内容保存到文本文件

问题描述:

我正在研究一个基于用户输入生成输出列表的应用程序(ASP.NET,Webforms)。我想允许用户将所述列表的内容保存为文本文件,或者可能将其保存为其他文件类型,例如.csv。解决这个问题的最好方法是什么?可以用Javascript完成客户端吗?允许用户将html列表的内容保存到文本文件

我认为您需要使用ActiveXJava AppletsSilverlight来做类似的事情。 JavaScript无权访问本地文件系统。

另一种方法是在服务器上创建一个文件(物理地或实时地)并将其提供给用户下载。这将让他保存文件对话框。

要做到这一点,创建一个空白页面(没有任何标记,甚至没有),设置Response.ContentType = 'text/plain'和使用Response.Write()写入您的内容Page_Load

+0

有没有办法做到这一点serverside,然后将结果文件传递给客户端? – Radu 2010-12-02 04:38:24

+0

更新了答案。 – decyclone 2010-12-02 04:41:12

通过构建和打开data URI,您可以纯粹在客户端JavaScript中生成纯文本或csv文件。

实施例使用jQuery:

window.open(
    'data:text/csv;charset=utf-8,' + 
    escape(
     $('#yourlist li') // <- selector for source data here 
      .map(function(){ 
       // format row here 
       return $(this).text(); 
      }) 
      .get() 
      .join('\r\n') 
    ) 
); 

不幸的是,这种技术将不在IE由于缺乏数据URI支持直到IE8和安全限制一次IE added support for data URIs工作。你必须使用IE的替代技术,无论是再次访问服务器还是使用ActiveX/Silverlight/Flash/Java Applet来避免大概已经在客户端上进行数据往返。