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

发布于 2024-09-14 23:00:36 字数 212 浏览 3 评论 0原文

我正在寻找一种方法将 HTML5 Web 数据库的内容保存到本地文件以实现持久性并加载回 Web 应用程序。我使用带有 HTML5 功能的 Firefox 3.6.8 来使用本地 Web 数据库。我可以上传文件并读取其内容,但无法找到一种优雅的方法将数据库的内容保存到文件系统。有什么想法吗?

我相信用 Flash 编写的东西可以做到这一点。我会考虑这个,但我更喜欢直接的 HTML 5 版本。

I am looking for a way to save the contents of an HTML5 web database to a local file for persistence and for loading back into the web application. I'm using Firefox 3.6.8 with the HTML5 features to use a local web database. I can upload a file and read it's contents but am unable to find an elegant way to save the contents of the database to the file system. Any ideas?

I believe there is something written in flash that can do this. I would consider this but I would prefer a straight HTML 5 version instead.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

感性不性感 2024-09-21 23:00:36

您无法使用纯 HTML 5 执行此操作,因为它没有任何处理本地文件的机制(无论如何,这都意味着存在安全风险)。您至少需要一些 JavaScript 或 Flash 来在本地存储数据。

但您无法使用 JavaScript 访问本地文件系统。您只能使用 Cookie 或浏览器的 localStorage 功能。

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

执行此操作的唯一方法是将数据发布到服务器,例如使用隐藏表单,并让服务器使用标头 Content-Disposition:attachment 进行响应,并将文件发送回客户端。例如:

<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>

使用 PHP 时,响应文件如下:

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

You can't do this with plain HTML 5, as it doesn't have any mechanism to deal with local files (that would imply a security risk anyway). You'll at least need some JavaScript or Flash to store data locally.

But you can't access the local filesystem using JavaScript. You can only use cookies or the localStorage capabilities of a browser.

Nor can you do this using Flash. Both system work the same: they store information in a place specified by the browser/Flash. Moreover, in both cases space is limited (the limit varies between platforms and even individual settings).

The only way to do this is to post the data to the server, e.g., using a hidden form, and let the server respond with header Content-Disposition: attachment and sending the file back to the client. For example:

<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>

and using PHP the response file reads:

<?php
    if (isset($_POST['data'])) {
        header('Content-Disposition: attachment; filename=foo.csv');
        header('Content-Type: application/octet-stream');
        echo $_POST['data'];
    }
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文