首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >可以将JavaScript变量保存为文件吗?

可以将JavaScript变量保存为文件吗?
EN

Stack Overflow用户
提问于 2014-07-23 05:19:32
回答 2查看 47.6K关注 0票数 29

有没有一种方法可以将JavaScrip变量中的字符串转换为用户单击按钮即可下载的可下载文件?

谢谢你的建议。

<div id="txt">Lorem Ipsum</div>
<br />
<button id="test">Download text as file !</button>
EN

回答 2

Stack Overflow用户

发布于 2014-07-23 05:27:27

您可以像在adeneo的答案中那样使用data: URI,但另一种方法是使用HTML5 Blob and createObjectURL (类似地,使用download属性创建下载链接)。

使用createObjectURL的好处是,在大多数浏览器中,数据URI都有严格的大小限制。

摘自链接文章的示例代码:

var typedArray = GetTheTypedArraySomehow();
var blob = new Blob([typedArray], {type: 'application/octet-binary'});
    // pass a useful mime type here
var url = URL.createObjectURL(blob);
// url will be something like: blob:d3958f5c-0777-0845-9dcf-2cb28783acaf
// now you can use the url in any context that regular URLs can be used
// in, for example img.src, etc.
票数 6
EN

Stack Overflow用户

发布于 2014-07-23 05:35:00

要存储javascript变量,我建议您使用libraries of data storage just like this one。你可以设置一个变量,获取它,删除它...

$.setData("key","value");
$.getData("key");
$.removeData("key");

但是,要将其存储在文件中并使其可下载,您必须经过服务器,除非您使用javascript技巧下载一个不存在的文件,您只需声明这些函数

 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("data to be on a file","FileName.txt");

最后,您需要将数据存储和filedownload解决方案结合起来,以获得您所要求的结果

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24898044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档