我可以使用jQuery动态创建文件(及其内容)吗?

KAU*_*.S. 10 javascript ajax jquery html5

这是我的HTML代码,

<ul>
  <li> Download <a href="#">file1</a> </li>
  <li> Download <a href="#">file2</a> </li>
  <li> Download <a href="#">file3</a> </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想创造类似的东西"href=filename.txt".该"filename"文本文件及其内容的需求要创建动态的基础上被点击了哪个标记.

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

Ale*_*der 23

HTML5开始,您可以使用data:URLdownload属性的组合.例如,

<a href="data:text/plain;charset=UTF-8,Hello%20World!" download="filename.txt">Download</a>
Run Code Online (Sandbox Code Playgroud)

或者,以编程方式,

<a id="programatically" href="#" download="date.txt">Download</a>
Run Code Online (Sandbox Code Playgroud)

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

在这里看到它.

遗憾的是,download不完全支持属性,并且data:URL处于良好状态.

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


Mor*_*sen 5

您可以使用数据 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>
Run Code Online (Sandbox Code Playgroud)

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