我知道默认情况下这是不允许的,你能帮我如何更改安全设置,以便我可以写入文件。谢谢你
1 回答
绝对没有办法用浏览器写入文件。但是像 Chrome 这样的现代浏览器允许您动态创建文件
在此示例中,我向文档添加了一个文本区域。
这有一个事件监听器 onchange。(所以写一些东西并模糊它在外面点击)
onchange 它读取你的 textarea 的值并将其转换为 base64
这很容易完成btoa()
数据被添加到新创建的锚的 href 中,其前缀为 (text/plain) 作为 mimetype 和 data: 告诉浏览器它是 DATA STRING 而不是链接。
Chrome 也有一个叫做download
锚点的新属性。这基本上是文件名。
这是现代浏览器中创建文件客户端的最快和最简单的方法。
您只需单击即可下载。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>write to file</title>
</head>
<body>
<script>
var t=document.createElement('textarea');
t.addEventListener('change',function(){
var a=document.createElement('a');
a.download='text.txt';
a.innerText='download';
a.href='data:text/plain;base64,'+btoa(this.value);
document.body.appendChild(a);
},false)
document.body.appendChild(t);
</script>
</body>
</html>
另一种解决方案是仅使用现代浏览器window.filesystem
,它将您想要的文件存储在虚拟 chrome 缓存(临时或持久)中。文件系统可以将大文件存储为 blob,并且它使用的资源很少。
然后是用于小文件的 localstorage/indexedDB/websql。
在最后一个解决方案中,您需要将数据保存为 base64,否则您无法存储信息。
在所有解决方案中,您的浏览器中有文件,您需要一个现代浏览器....但您需要下载文件。
如果您想在已经存在的文件上写入数据,您可以使用FileReadr()
并FileWriter.append()
拖放或只是一个简单的文件输入来选择现有文件。