如何在 Javascript 中使用名称保存 textarea 中的文件? [复制]

Posted

技术标签:

【中文标题】如何在 Javascript 中使用名称保存 textarea 中的文件? [复制]【英文标题】:How to save file from textarea in Javascript with a name? [duplicate] 【发布时间】:2012-10-03 23:14:56 【问题描述】:

可能重复:Using html5/javascript to generate and save a file

我想要一个客户端 HTML/JS 解决方案来解决这个问题 - 我有一个用户可编辑的文本区域 A、一个文本字段 B 和一个按钮 C。当用户单击 C 时,她会下载一个名称等于 B 的文件.value 和内容等于 A.value。我查看了this,但它没有指定如何设置文件名,我不想要像this 这样的Flash 解决方案。我们可以假设用户使用的是最新的 Chrome 浏览器(这是我团队的一个小工具)

【问题讨论】:

可以通过指定header来设置文件名,见this question。 在规范中执行此操作但尚不可用,请参阅此问题的答案@JeremyJStarcher 链接到:***.com/a/10667687/1615483 【参考方案1】:

因为“我们可以假设用户使用的是最新的 Chrome 浏览器”,这种类型的事情可以通过创建一个具有 downloadhref 属性的 <a> 来完成,并且然后点击它。 示例代码如下。

var Download = 
    click : function(node) 
        var ev = document.createEvent("MouseEvents");
        ev.initMouseEvent("click", true, false, self, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
        return node.dispatchEvent(ev);
    ,
    encode : function(data) 
            return 'data:application/octet-stream;base64,' + btoa( data );
    ,
    link : function(data, name)
        var a = document.createElement('a');
        a.download = name || self.location.pathname.slice(self.location.pathname.lastIndexOf('/')+1);
        a.href = data || self.location.href;
        return a;
    
;
Download.save = function(data, name)
    this.click(
        this.link(
            this.encode( data ),
            name
        )
    );
;

Download.save('hello world', 'my_file.txt');

【讨论】:

以上是关于如何在 Javascript 中使用名称保存 textarea 中的文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

场景重新加载后不保存对象名称

按名称将图像从相机保存到 sqlite

javascript 变量与常量本质

在 WPF 中 ImageBox.Source == null 时无法保存 SQLİte

无法将数据保存到 mysql db,在 gradle 项目中,bean 名称“goal”的 BindingResult 和普通目标对象都不能用作请求属性

Javascript如何按字段在数组中搜索[重复]