Как можно загрузить содержимое веб-базы данных HTML5 для клиента? - PullRequest
1 голос
/ 14 августа 2010

Я ищу способ сохранить содержимое веб-базы данных HTML5 в локальный файл для сохранения и загрузки обратно в веб-приложение.Я использую Firefox 3.6.8 с функциями HTML5 для использования локальной веб-базы данных.Я могу загрузить файл и прочитать его содержимое, но не могу найти элегантный способ сохранить содержимое базы данных в файловой системе.Любые идеи?

Я верю, что есть что-то написанное на флэш-памяти, которое может сделать это.Я бы подумал об этом, но вместо этого я бы предпочел прямую версию HTML 5.

1 Ответ

0 голосов
/ 15 августа 2010

Вы не можете сделать это с обычным 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'];
    }
?>
...