1

我知道默认情况下这是不允许的,你能帮我如何更改安全设置,以便我可以写入文件。谢谢你

4

1 回答 1

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()拖放或只是一个简单的文件输入来选择现有文件。

于 2013-08-18T16:36:17.863 回答