使用 Javascript 创建和保存文件
Javascript 可以把 JSON 文本保存成一个文件,前提是你在点击下载的时候。本文会介绍到 Javascript 是怎么创建文件的,怎么把 JSON 文本保存到文件里。
我们可以使用 Javascript 的 Blob
对象来创建文件,以下是一个简单的例子:
var file = new Blob(["Hello World"], {type: type})
Blob 对象有两个参数,第一个参数是一个数组,包含了要把哪些数据添加到文件里,第二个参数是一个对象,主要用来设置 Blob 对象的属性。
那单有这行还是不够的,要怎么保存成文件?使用浏览器下载的方法。代码如下:
html
<a href="" id="a">Lets download file</a>
<button onclick="download('file text', 'myfilename.txt', 'text/plain')">Create file</button>
javascript
function download(text, name, type) {
var a = document.getElementById("a")
var file = new Blob([text], {type: type})
a.href = URL.createObjectURL(file)
a.download = name
}
但是把下载直接写在 html 并不是一个美观的做法,让我们使用 jQuery 来实现同样的功能。
function download(text, name, type) {
var file = new Blob([text], {type: type})
var a = $('<a id="download-it">Download it</a>').appendTo('body')
a[0].href = URL.createObjectURL(file)
a[0].download = name
a[0].click()
}
download('file text', 'myfilename.txt', 'text/plain')
这块代码,理念是用 Javascript 模拟了一个下载行为。但是文件内容只有一段文本。如果想是一段 JSON,那要怎么操作?比如这段 JSON 是一组视频下载链接。
var videos = [
{
link:"/watch?v=YlUKcNNmywk",
title:"Red Hot Chili Peppers - Californication [Official Music Video]",
views:"1,286,283",
date:"Oct 26, 2009"
},
{
link:"/watch?v=SBjQ9tuuTJQ",
title:"Foo Fighters - The Pretender",
views:"752,533",
date:"Oct 2, 2009"
}
]
还是可以使用刚才写的 download()
函数,只是要先把 JSON 变成数组格式。
download(JSON.stringify(videos), 'videos.json', 'text/json')
使用 JSON.stringify()
的方法,把 JSON 文本变成数组。想象力是无限,动动脑子,这个功能也可以说是挺丰富的。毕竟互联网上的一切都可以说基于文本。