【问题标题】:Can I use jQuery to create a file (and its content) dynamically? [closed]我可以使用 jQuery 动态创建文件(及其内容)吗? [关闭]
【发布时间】:2012-12-16 18:47:15
【问题描述】:

这是我的 HTML 代码,

<ul>
  <li> Download <a href="#">file1</a> </li>
  <li> Download <a href="#">file2</a> </li>
  <li> Download <a href="#">file3</a> </li>
</ul>

我想创建类似"href=filename.txt" 的东西。文本文件的"filename"及其内容需要根据点击的标签动态创建。

我使用 Web API 来获取 JSON 格式的数据,因此我认为安全性不应该成为问题。

【问题讨论】:

  • 做这个服务器端会更有意义。你有什么理由选择 JavaScript 吗?
  • 出于安全考虑,HTML4 不允许在客户端进行任何文件操作。 HTML5 有一个 File API 可以做到这一点。
  • Jquery 是一个 JavaScript 框架——它不能做 JS 不能做的事情。一些浏览器可以读取文件,但在任何地方写入文件都是一个安全问题
  • 问题“问题”与您的问题内容,​​尤其是代码 - 不匹配。你问的是文件创建,但在你的演示中你提供了一个“下载”——你需要做什么的 HTML 内容??

标签: javascript jquery ajax html


【解决方案1】:

HTML5 开始,您可以使用data: URLdownload attribute 的组合。例如,

<a href="data:text/plain;charset=UTF-8,Hello%20World!" download="filename.txt">Download</a>

或者,以编程方式,

<a id="programatically" href="#" download="date.txt">Download</a>

$("a#programatically").click(function() {
    var now = new Date().toString();
    this.href = "data:text/plain;charset=UTF-8," + encodeURIComponent(now);
});​

See it here.

很遗憾,download attribute is not fully supporteddata: URLs are in good track

现在,为了获得更好的跨浏览器支持,您需要在服务器端动态创建文件。

【讨论】:

    【解决方案2】:

    你可以使用data URI,这是一个非常简单的例子:

    <html>
    <body>
    <a href="#">click</a>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script>
    $(document).ready(function() {
        $("a").click(function() {
            window.location.href = "data:text/plain;charset=UTF-8,Hello World";
        });
    });
    </script>
    </body>
    </html>
    

    但是,您不能设置文件名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-28
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 2019-02-13
      相关资源
      最近更新 更多