当前位置: 首页 > 面试题库 >

如何将JavaScript字符串下载为文件

扈沛
2023-03-14
问题内容

应用程序通过AJAX从服务器请求KML数据。此数据存储在javascript变量中,并显示在Google Earth插件中。

在javascript中,如何提供链接以下载存储在javascript变量中(作为字符串)的KML数据,而无需将请求返回服务器?

此链接:http :
//forum.mootools.net/viewtopic.php?id=9728

建议使用数据URI,但这可能无法满足我的需求而无法在足够多的浏览器中使用。可能最简单的方法是返回服务器再次获取数据以进行下载,但是好奇是否有人使用javascript来实现这一目的。


问题答案:

简短的答案:您不能并且仍然独立于平台。大多数浏览器只是不允许javascript操纵文件系统。

也就是说,您也许可以摆脱一些非常特定于平台的黑客攻击。例如,IE提供了execCommand函数,您可以使用该函数调用SaveAs。如果您在具有要保存的数据的IFrame内执行此操作,则可能会使其正常工作-
但仅适用于IE。其他选项(同样,我将在这里使用Microsoft特定的选项)包括此Silverlight
hack
或ActiveX控件。

我认为,要获得完全的平台兼容性,您将不得不吸收它并提供服务器端下载选项。

[编辑]糟糕!去链接搜索时,我没有进行足够的尽职调查。事实证明,我链接到的Silverlight hack具有服务器端组件。看起来你很漂亮。

[Edit2]我在这里找到了execCommand的浏览器兼容性的不错摘要。尽管它为“
saveas”命令列出了问号,但毕竟这可能是一条不错的选择。值得一试吗?

[Edit3]好吧,我决定对我建议的方法进行概念验证,并且在IE中有了一些相当简单的东西。不幸的是,我在此过程中证明了这种方法不适用于Firefox,而且似乎也不适用于Chrome /
Safari。因此,这完全取决于平台。但这有效!这是完整的工作页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Javascript File Saver</title>
    <script type="text/javascript">
      function PageLoad() {
        var fdoc = window.frames["Frame"].document;
        fdoc.body.appendChild(fdoc.createTextNode("foo,bar,baz"));
      }
      function Save() {
        var fdoc = window.frames["Frame"].document;
        fdoc.execCommand("SaveAs", true);
      }
    </script>
</head>
<body onload="PageLoad();">
<h2>Javascript File Saver</h2>
<iframe id="Frame" style="width: 400px;">Noframe</iframe><br />
<button onclick="Save();">Save</button>
</body>
</html>


 类似资料:
  • 问题内容: 我有一个字符串,单击按钮时需要将其下载到文件中。如何使用React来实现呢? 问题答案: 这是一个工作示例。在输入字段中输入文本,然后单击,这将下载包含您在输入中输入的内容的。 此解决方案创建了一个新的MIME类型的 Blob对象 ,并将其附加到临时anchor()元素的,然后以编程方式触发该元素。 Blob对象代表不可变的原始数据的类似文件的对象。Blob表示的数据不一定是JavaS

  • 问题内容: 将字符串拆分为流的 最佳 方法是什么? 我看到了这些变化: 我的优先事项是: 坚固性 可读性 性能 一个完整的可编译示例: 问题答案: / 由于返回数组,因此我始终建议您使用流式处理数组的规范用法。 / 是一个 varargs 方法,它恰好接受一个数组,这是由于varargs方法是通过数组实现的,并且在将varargs引入Java以及改型为接受可变参数的现有方法时,存在兼容性方面的问题

  • 问题内容: 我正在阅读有关python的新f字符串的 博客 ,它们看起来很整洁。但是,我希望能够从字符串或文件中加载f字符串。 我似乎找不到任何执行此操作的字符串方法或其他函数。 从上面我的链接中的示例: 但是,如果我有琴弦怎么办?我希望能够像这样: 事实证明,我已经可以执行类似的操作并获得性能提高。即: 问题答案: f字符串是代码。不仅以安全的方式(当然,字符串文字就是代码),而且以危险的任意代

  • 问题内容: 我有一个PHP脚本,可以将PNG图像编码为Base64字符串。 我想使用JavaScript做同样的事情。我知道如何打开文件,但不确定如何进行编码。我不习惯使用二进制数据。 问题答案: 您可以使用和来与base64编码进行相互转换。 关于这些功能接受/返回的内容,评论中似乎有些混乱,所以…… 接受一个“字符串”,其中每个字符代表一个8位字节-如果传递的字符串包含不能以8位表示的字符,则

  • 问题内容: 我正在尝试从数据网格解析两个值。这些字段是数字,并且当它们有逗号(例如554,20)时,我无法在逗号后得到数字。我试过和。我怎样才能做到这一点? 问题答案: 如果它们是单独的值,请尝试以下操作: 如果它们是一个单一值(例如法语,其中一半写为0.5)

  • 在我的申请中,我得到了如下的回应 如何将其转换为JSON。尝试了JSON。解析似乎不起作用。是否有其他方法将此字符串转换为有效的JSON格式