JavaScript如何保存到本地文件?

JavaScript如何保存到本地文件?,javascript,jquery,json,jsonp,Javascript,Jquery,Json,Jsonp,已经有一个在线编写JSON文件的解决方案,但我想在本地保存JSON文件。 我试着用这个例子 它使用此调用创建下载文件的链接 a.attr('href','data:application/x-json;base64',+btoa(t.val()).show() 有没有办法在本地保存文件而不是提供可下载的链接? 除了数据,还有其他类型的转换:application/x-json;base64 这是我的密码: <!DOCTYPE html> <head> <m

已经有一个在线编写JSON文件的解决方案,但我想在本地保存JSON文件。 我试着用这个例子 它使用此调用创建下载文件的链接
a.attr('href','data:application/x-json;base64',+btoa(t.val()).show()
有没有办法在本地保存文件而不是提供可下载的链接?
除了
数据,还有其他类型的转换:application/x-json;base64

这是我的密码:

<!DOCTYPE html>
<head> 
    <meta charset="utf-8">
    <title>jQuery UI Sortable - Default functionality</title>

    <link rel="stylesheet" href="http://jqueryui.com/themes/base/jquery.ui.all.css">
    <script src="http://jqueryui.com//jquery-1.7.2.js"></script>
    <script src="http://jqueryui.com/ui/jquery.ui.core.js"></script>
    <script src="http://jqueryui.com/ui/jquery.ui.widget.js"></script>
    <script src="http://jqueryui.com/ui/jquery.ui.mouse.js"></script>
    <script src="http://jqueryui.com/ui/jquery.ui.sortable.js"></script>
        <script src="http://jqueryui.com/ui/jquery.ui.accordion.js"></script>
    <link rel="stylesheet" href="http://jqueryui.com/demos/demos.css">        
    <meta charset="utf-8">
    <style>a { font: 12px Arial; color: #ac9095; }</style>
<script type='text/javascript'>
$(document).ready(function() {
var f = $('form'), a = $('a'),
    i = $('input'), t = $('textarea');

$('#salva').click(function() {
    var o = {}, v = t.val();

    a.hide();//nasconde il contenuto
    i.each(function() { 
    o[this.name] = $(this).val(); });
    if (v === '') {
        t.val("[\n " + JSON.stringify(o) + " \n]")         
    }
    else {
        t.val(v.substr(0, v.length - 3));
        t.val(t.val() + ",\n " + JSON.stringify(o) +  " \n]")  
    }
});
});

$('#esporta').bind('click', function() {
    a.attr('href', 'data:application/x-json;base64,' + btoa(t.val())).show();

});
</script>
</head>
<body>
    <form>
        <label>Nome</label> <input type="text" name="nome"><br />
        <label>Cognome</label> <input type="text" name="cognome">
        <button type="button" id="salva">Salva</button>
    </form>        

    <textarea rows="10" cols="60"></textarea><br />
    <button type="button" id="esporta">Esporta dati</button>
    <a href="" style="display: none">Scarica Dati</a>
</body>
</html>

jQuery UI可排序-默认功能
a{font:12px Arial;颜色:#ac9095;}
$(文档).ready(函数(){
变量f=$('form'),a=$('a'),
i=$('input'),t=$('textarea');
$('#salva')。单击(函数(){
var o={},v=t.val();
a、 hide();//nasconde il contenuto
i、 每个(函数(){
o[this.name]=$(this.val();});
如果(v==''){
t、 val(“[\n”+JSON.stringify(o)+”\n]”)
}
否则{
t、 val(v.substr(0,v.length-3));
t、 val(t.val()+“,\n”+JSON.stringify(o)+“\n]”)
}
});
});
$('#esporta').bind('click',function(){
a、 attr('href','data:application/x-json;base64',+btoa(t.val()).show();
});
Nome
同源的 萨尔瓦
达蒂埃斯波尔塔酒店
如果不涉及本地客户端(浏览器机器),则无法在本地保存文件,因为我可能会对客户端机器造成巨大威胁。您可以使用链接下载该文件。如果您想在本地计算机上存储类似Json的数据,可以使用浏览器提供的本地存储,因此,真正的问题是:“JavaScript如何保存到本地文件?”

看看

在您对HTML页面进行内部“更改”后,他们会将其保存在本地

[更新2016.01.31]

TiddlyWiki原始版本直接保存。它非常好,并保存到一个可配置的备份目录中,时间戳作为备份文件名的一部分

TiddlyWiki当前版本只是将其作为任何文件下载。您需要自己进行备份管理:(

[更新结束]

诀窍是,您必须以file://而不是http://的形式打开页面才能在本地保存

浏览器上的安全性不允许您保存到其他人的本地系统,只允许保存到您自己的本地系统,即使这样,它也不是微不足道的


-Jesse

这一切都取决于你试图通过“本地储蓄”实现什么。是否允许用户下载该文件?然后是解决方法。是否将其保存在本地,以便恢复应用程序状态?然后,您可能需要查看的各种选项。特别是或。允许您创建可存储任意数据的本地虚拟文件系统。

您应该检查
download
属性和
window.URL
方法,因为
download
属性似乎不喜欢数据URI。
这正是您所要做的。

虽然大多数人都不喜欢Flash,但它是在html/javascript环境中提供“保存”和“另存为”功能的可行选项

我已经创建了一个名为“OpenSave”的小部件,它提供了以下可用功能:


-mike

如果您使用的是FireFox,您可以使用HandleAPI文件

我刚刚测试过,它可以工作!

基于:


修改了原来的fiddle:

谢谢,它可能提供了错误的信息,但我以前不知道这一点,并曾向它寻求帮助。请告诉我答案中给出的特定链接有什么问题。Thx!!!现在我正在学习Web存储,但除了数据之外还有其他类型的转换:application/x-json;base64?Uao ROdneyrehm我不知道这个网站wfools.com现在我正在研究Tiddlywiki,但是除了数据之外还有其他类型的转换:application/x-json;base64?Tiddlywiki使用java小程序访问本地文件系统,而不是javascript。Tiddlywiki使用java小程序进行Safari和Opera。对于IE,它使用ActiveX,对于Firefox/Camino,它使用纯javascipt(通过privilegeManager)或firefox扩展(因为privilegeManager在v15中被删除)。这个jQuery插件是从TiddlyWiki中提取出来的,它是按照@dwurf的解释工作的。thx但是除了数据之外还有其他类型的转换:application/x-json;base64?除了它应该是-不,我看不出还有什么意义。使用IndexedDB如何下载本地?IndexedDB并不意味着是一个可下载的文件。它是一个d你浏览器中的数据库。这不是你想要的。+1我在过去尝试过数据uri模式,它可以工作,但它决定了你最终使用的文件的名称,所以它几乎毫无用处。我在Firefox、Safari、Opera和Mac上的Chrome中尝试过,Safari和Opera没有“BlobBuilder”,所以关于“仅Chrome开发频道”的免责声明(14.0.835.15+)支持此属性“部分正确。目前它在FireFox上工作,在Safari和Opera中失败。Blob Builder应该也在MSIE中工作…链接已断开。是否可以使用此选项保存头部和身体标签中的所有内容?这是我的首选答案。
var fileContent = "My epic novel that I don't want to lose.";
var bb = new Blob([fileContent ], { type: 'text/plain' });
var a = document.createElement('a');
a.download = 'download.txt';
a.href = window.URL.createObjectURL(bb);
a.click();