簡體   English   中英

在javascript中將json對象寫入文本文件

[英]Writing a json object to a text file in javascript

我在javascript中有一個JSON對象。 我想簡單地將JSON對象寫入文本文件。 從目前為止我遇到的事情表明,由於客戶端的安全問題,不可能這樣做。 有解決方法嗎? 如果最初放置一些虛擬值,是否可以修改已存在的文件?

謝謝

您可以做的一件事是將JSON設置為即時下載。

var data = "{name: 'Bob', occupation: 'Plumber'}";
var url = 'data:text/json;charset=utf8,' + encodeURIComponent(data);
window.open(url, '_blank');
window.focus();

工作演示: http//jsfiddle.net/sLq3F/

除此之外,由於安全原因,您無法在客戶端上向文件寫入JSON。 (否則您可以訪問網站用戶的文件系統。)您必須使用服務器端語言,並將文件存儲在服務器端。


更正:看起來您可以寫入文件,即用戶文件系統的“沙盒部分”。 請參閱下面的Kevin Jantzer的評論。

另一個更正 :抱歉,Filesystem API未被使用。 來自HTMl5Rocks網站:“2014年4月,在public-webapps上公布了Filesystem API規范應該被認為已經死亡。其他瀏覽器對它的實現興趣不大。”

也許這個解決方案更加優雅,在Chrome,FF和ie7到ie10中進行測試,使用文本,JSON,PDF和XLS數據進行測試(使用適當的內容類型)

使用數據blob提供saveFile()函數,或者在type設置為nothing的情況下動態創建數據blob,並在[]之間創建數據

在這個例子中,我們只是對settings對象進行字符串化,並正確設置數據類型。

settings = { any_kind_of_object: true };
json_str = JSON.stringify(settings);

saveFile('yourfilename.json', "data:application/json", new Blob([json_str],{type:""}));

function saveFile (name, type, data) {
    if (data != null && navigator.msSaveBlob)
        return navigator.msSaveBlob(new Blob([data], { type: type }), name);

    var a = $("<a style='display: none;'/>");
    var url = window.URL.createObjectURL(new Blob([data], {type: type}));
    a.attr("href", url);
    a.attr("download", name);
    $("body").append(a);
    a[0].click();
    setTimeout(function(){  // fixes firefox html removal bug
        window.URL.revokeObjectURL(url);
        a.remove();
    }, 500);  
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM