Javascript 将本地存储还原到本地文件

Javascript 将本地存储还原到本地文件,javascript,jquery,html,Javascript,Jquery,Html,有没有办法用jquery或JavaScript轻松地将本地存储保存并恢复到文件中 这有3种情况: 使用特定的本地存储进行测试 在某些特定情况下对本地存储进行备份,这些情况下,此数据至关重要(我们希望在删除本地缓存时进行保存) 从现有本地存储设置另一个浏览器 保存和检索本地存储的过程分为两部分 首先,您必须能够以javascript可管理的形式检索本地存储的内容。由于本地存储是键值对的映射,因此最简单的方法是将本地存储转换为javascript对象。然后将该对象转换为JSON字符串。如何处理这个字

有没有办法用jquery或JavaScript轻松地将本地存储保存并恢复到文件中

这有3种情况:

  • 使用特定的本地存储进行测试

  • 在某些特定情况下对本地存储进行备份,这些情况下,此数据至关重要(我们希望在删除本地缓存时进行保存)

  • 从现有本地存储设置另一个浏览器


  • 保存和检索本地存储的过程分为两部分

    首先,您必须能够以javascript可管理的形式检索本地存储的内容。由于本地存储是键值对的映射,因此最简单的方法是将本地存储转换为javascript对象。然后将该对象转换为JSON字符串。如何处理这个字符串取决于您,但我发现让用户将字符串复制到电子邮件中是最简单的

    function getLocalStorage() {
        var a = {};
        for (var i = 0; i < localStorage.length; i++) {
            var k = localStorage.key(i);
            var v = localStorage.getItem(k);
            a[k] = v;
        }
        var s = JSON.stringify(a);
        return s;
    }
    

    问题的最后一部分是如何保护数据不被覆盖。您不能写入本地文件,但是,您可以将数据复制到
    中,并告诉用户如何将数据复制并粘贴到电子邮件或电子邮件中。

    我可能会将此作为对Nathaniel Johnson答案的评论,但我还没有声誉!关于这些方法,以下是his函数的一些更简单的版本:

    function getLocalStorage() {
        return JSON.stringify(localStorage)
    }
    
    function writeLocalStorage(data) {
        Object.keys(data).forEach(function(key) { localStorage.setItem(key, data[key])})
    }
    

    下面的javascript适合我:

    function getLocalstorageToFile(fileName) {
      
      /* dump local storage to string */
      
      var a = {};
      for (var i = 0; i < localStorage.length; i++) {
        var k = localStorage.key(i);
        var v = localStorage.getItem(k);
        a[k] = v;
      }
      
      /* save as blob */
      
      var textToSave = JSON.stringify(a)
      var textToSaveAsBlob = new Blob([textToSave], {
        type: "text/plain"
      });
      var textToSaveAsURL = window.URL.createObjectURL(textToSaveAsBlob);
      
      /* download without button hack */
      
      var downloadLink = document.createElement("a");
      downloadLink.download = fileName;
      downloadLink.innerHTML = "Download File";
      downloadLink.href = textToSaveAsURL;
      downloadLink.onclick = function () {
        document.body.removeChild(event.target);
      };
      downloadLink.style.display = "none";
      document.body.appendChild(downloadLink);
      downloadLink.click();
      
    }
    
    函数getLocalstorageToFile(文件名){ /*将本地存储转储到字符串*/ 变量a={}; for(var i=0;i您无法使用JavaScript读取/写入本地文件系统。对于最新JavaScript中的文件API,上述情况不再适用。但更简单的是,您的解决方案可以是每个数据集一个简单的JS文件,它使用位于同一文件中的“硬编码”数据(例如作为JS对象)刷新和重新填充存储。Marcell:您的建议适用于测试(上面的案例1),但不适用于2,在2中,我需要为特定的生产情况保存本地存储。此外,看起来在Chrome和explorer当前版本上支持FIELAPI。智能且简洁。谢谢
    function getLocalstorageToFile(fileName) {
      
      /* dump local storage to string */
      
      var a = {};
      for (var i = 0; i < localStorage.length; i++) {
        var k = localStorage.key(i);
        var v = localStorage.getItem(k);
        a[k] = v;
      }
      
      /* save as blob */
      
      var textToSave = JSON.stringify(a)
      var textToSaveAsBlob = new Blob([textToSave], {
        type: "text/plain"
      });
      var textToSaveAsURL = window.URL.createObjectURL(textToSaveAsBlob);
      
      /* download without button hack */
      
      var downloadLink = document.createElement("a");
      downloadLink.download = fileName;
      downloadLink.innerHTML = "Download File";
      downloadLink.href = textToSaveAsURL;
      downloadLink.onclick = function () {
        document.body.removeChild(event.target);
      };
      downloadLink.style.display = "none";
      document.body.appendChild(downloadLink);
      downloadLink.click();
      
    }