保存json字符串到客户端pc(使用HTML5 API)
Save json string to client pc (using HTML5 API)
我读了一些关于相同的旧线程,但看到文件API最近改变了很多。我的要求是保存一个json文件(数据在indexdb本地,但我需要一种方法来备份它)。因为我使用indexdb,我只针对最近的浏览器,主要是chrome。所以,它有可能保存数据(json字符串)到客户端计算机?
我已经看到http://eligrey.com/demos/FileSaver.js/,但是有没有一种方法来做它的本机?
谢谢。
您可以使用Blob
和HTML5 a[download]
特性来提供JSON备份下载:
var data = {a:1, b:2, c:3};
var json = JSON.stringify(data);
var blob = new Blob([json], {type: "application/json"});
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.download = "backup.json";
a.href = url;
a.textContent = "Download backup.json";
下面是一个jsfiddle示例:http://jsfiddle.net/potatosalad/yuM2N/
可以。这假设您在text
中有json:
var toDownload=new Blob([text],{type:'x-whatever/x-backup'});
var link=window.URL.createObjectURL(toDownload);
window.location=link;
没有经过测试,但是应该可以运行。
你可以使用filesver .js。
示例代码:
//include the js file in html.
<script src="FileSaver.min.js"></script>
// other code ...
//use it here.
var myjson= "{a:3, b:4}";
var blob = new Blob([myjson], {type: "application/json"});
var saveAs = window.saveAs;
saveAs(blob, "my_outfile.json");
使用JSON.stringify
从JSON创建字符串
小提琴:https://jsfiddle.net/9w9ofec4/3/
基于土豆沙拉的答案,我尝试了一个"自我"更新链接:
jsfiddle
function saveAsFile(link, content, filename) {
var blob = new Blob([content], {type: "text/text"});
var url = URL.createObjectURL(blob);
// update link to new 'url'
link.download = filename + ".txt";
link.href = url;
}
saveAsFile(this, "YourContent", "HelloWorldFile");
函数saveAsFile()
需要调用a
元素作为第一个参数。
然后将href
目标更新为新的blob
function saveAsJSON(data, name=Date.now()+'.json') {
const a = document.createElement('a')
a.download = name
a.href = URL.createObjectURL(new Blob([JSON.stringify(data)], {type: 'application/json'}))
a.click()
}
// https://stackoverflow.com/questions/62371219/chrome-stops-download-files-from-stackoverflow-snippets
saveAsJSON(['orange', 'banana', {name: 'apple'}])
要用自定义名称保存文件,可以创建一个隐藏的元素,然后单击它。filesver .js使用这个方法。
function download(name, text){
var toDownload=new Blob([text],
{type:'data:application/octet-stream'});
var link = window.URL.createObjectURL(toDownload);
var el = document.createElement("a");
el.href = link;
el.download = name;
el.click();
window.URL.revokeObjectURL(link);
}
相关文章:
- 如何使用HTML5与UDP套接字通信
- 尝试创建一个具有z-index的堆叠菜单'使用HTML5/CSS3/JS
- 使用HTML5 localStorage和jQuery添加到收藏夹/书签
- 在FF和IE中使用vimeo播放器的问题-加载flash播放器而不是使用HTML5播放器
- 使用HTML5播放器时使用Javascript更改Youtube视频
- 是否可以使用HTML5/javascript播放此流
- 使用HTML5 JS框架进行本地存储
- 如何使用html5生成临时公钥
- 使用HTML5流式传输加密版权内容(音频/视频)
- 为什么我应该使用HTML5(上下文:占位符)
- 如何使用html5制作播放按钮
- 使用html5地理位置api创建地理围栏
- 直接使用html5或javascript打印
- 实际参考和使用HTML5捕获的图像
- 使用HTML5 Navigation Timing API时,导航开始时间设置为0
- 尝试使用HTML5和CSS创建子菜单
- 我如何使用HTML5网络工作者与谷歌关闭工具
- 我可以使用 HTML5 文件 API 预览 PDF 吗?
- 如何使用HTML5和AR在视频/图像上实时生成3d标记
- 如何使用HTML5和Javascript同时读取两个文本文件