代码之家  ›  专栏  ›  技术社区  ›  Nelson

如何在Javascript中动态创建供下载的文档?

  •  13
  • Nelson  · 技术社区  · 16 年前

    我正在编写一些Javascript代码,在客户端生成一个XML文档(通过 Google Earth plugin ). 我希望用户能够单击页面上的按钮并被提示将XML保存到新文件中。如果我正在生成XML服务器端,这将很容易,只需使按钮打开链接。但是XML是在客户端生成的。

    我想出了一些半途而废的技巧,部分灵感来自 this StackOverflow question . 但两者都不完全起作用。下面是一个带有嵌入式代码的演示HTML:

    <html><head><script>
    function getData() { return '<?xml version="1.0" encoding="UTF-8"?><doc>Hello</doc>'; }
    function dlDataURI() {
      window.open("data:text/xml;charset=utf-8," + getData());
    }
    function dlWindow() {
      var w = window.open();
      w.document.open();
      w.document.write(getData());
      w.document.close();
    }
    </script><body>
    <div onclick="dlDataURI()">Click for Data URL</div>
    <div onclick="dlWindow()">Click for Window</div>
    </body></html>
    

    在客户端Javascript中有没有一个好的方法来实现我想要的?我希望它能在今天的浏览器中工作,最好是Firefox、MSIE8和Chrome。

    用示例下载代码更新

    window.onload = function() {
      Downloadify.create("dlify", {
        data: getData(),
        filename: "data.xml",
        swf: 'media/downloadify.swf',
        downloadImage: 'images/download.png',
        width: 100, height: 30});};
    
    2 回复  |  直到 9 年前
        1
  •  5
  •   Community Mohan Dere    9 年前

    到目前为止我见过的最好的是 Downloadify 通过 Doug Neiner

    video .

        2
  •  1
  •   spender    16 年前

    如果Flash是一个选项,那么flashplayer(版本10+)提供了从本地文件系统有限地读/写文件的方法。

    http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/net/FileReference.html#save%28%29