如何将HTML5Web数据库的内容下载到客户端?

如何将HTML5Web数据库的内容下载到客户端?,html,storage,filesystems,Html,Storage,Filesystems,我正在寻找一种将HTML5Web数据库的内容保存到本地文件的方法,以便持久化并加载回web应用程序。我正在使用具有HTML5功能的Firefox3.6.8来使用本地web数据库。我可以上传一个文件并读取它的内容,但我无法找到一种优雅的方式将数据库的内容保存到文件系统中。有什么想法吗 我相信用flash写的东西可以做到这一点。我会考虑这一点,但是我更喜欢一个直截了当的HTML 5版本。你不能用普通的HTML 5来做这件事,因为它没有任何机制来处理本地文件(这将意味着安全风险)。您至少需要一些Jav

我正在寻找一种将HTML5Web数据库的内容保存到本地文件的方法,以便持久化并加载回web应用程序。我正在使用具有HTML5功能的Firefox3.6.8来使用本地web数据库。我可以上传一个文件并读取它的内容,但我无法找到一种优雅的方式将数据库的内容保存到文件系统中。有什么想法吗


我相信用flash写的东西可以做到这一点。我会考虑这一点,但是我更喜欢一个直截了当的HTML 5版本。

你不能用普通的HTML 5来做这件事,因为它没有任何机制来处理本地文件(这将意味着安全风险)。您至少需要一些JavaScript或Flash来本地存储数据

但是不能使用JavaScript访问本地文件系统。您只能使用cookie或浏览器的功能

你也不能用Flash来做这件事。两个系统的工作原理相同:它们将信息存储在浏览器/Flash指定的位置。此外,在这两种情况下,空间都是有限的(限制因平台甚至个别设置而异)

这样做的唯一方法是将数据发布到服务器,例如使用隐藏表单,并让服务器响应标题
内容处置:附件
,然后将文件发送回客户端。例如:

<form action="doLoopback.php" method="POST" name="theForm">
  <input type="hidden" id="data-container" name="data">
</form>
<span id="trigger">→ Click here! ←</span>
<script>
var theData = '123, 2334, "Fé℗⇒oo"';

function sendData() {
    document.getElementById('data-container').value = theData;
    document.theForm.submit();
}

window.onload = function () {
    var el = document.getElementById('trigger');
    el.onclick = sendData;
};
</script>

→ 点击这里!←
var theData='1232334,“Fé℗⇒"oo",;
函数sendData(){
document.getElementById('data-container')。值=数据;
document.theForm.submit();
}
window.onload=函数(){
var el=document.getElementById('trigger');
el.onclick=发送数据;
};
使用PHP,响应文件如下所示:

<?php
    if (isset($_POST['data'])) {
        header('Content-Disposition: attachment; filename=foo.csv');
        header('Content-Type: application/octet-stream');
        echo $_POST['data'];
    }
?>


我要寻找的是一种将所有内容都保存在客户端的方法。我不希望任何数据被发送到服务器。我相信我见过一款flash应用程序可以做到这一点。你知道那叫什么吗?我也理解为什么他们没有添加保存到磁盘的功能,因为这是一种安全风险,但如果我可以从服务器下载文件并在本地保存,为什么单击在本地执行完全相同的文件保存对话框的链接会更具安全风险?@spig:你说得对,我自己也想到了。只是你描述的不是浏览器的设计方式。离线网络应用是相当新的。我不懂Flash,所以我帮不了你。也许这是一个很好的参考问题:如何在Flash中本地保存文件:如何在silverlight中本地保存文件:看起来这是即将到来的事情:我猜实际上它仍然在从服务器下载,但不使用“另存为”对话框。我想我真正想要的是多一点——或者至少是从客户端保存本地文件的能力。