• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zapis obiektu do pliku w JavaScript - jak się za to zabrać? (Chrome Extension)

VPS Starter Arubacloud
+1 głos
826 wizyt
pytanie zadane 12 grudnia 2016 w JavaScript przez Codexter Użytkownik (990 p.)

Witajcie,

mam problem z zapisem obiektu do pliku. Obiekt jest parsowany za pomocą JSON.stringify i następnie chciałbym zawartość umieścić w pliku na dysku. Próbuję czegoś takiego jak poniżej, ale to nie działa...

//Receiving Objects from [inject1.js]
chrome.runtime.onMessage.addListener(function (response, sender, sendResponse) {
    alert("Bedzie response zaraz");
    alert("Object Vehicle: " + "\n" + JSON.stringify(response.myVehicleObject));


    var txtFile = "/tmp/test.txt";
    var file = new File(txtFile, "write");
    var str = JSON.stringify(response.myVehicleObject);

    alert("opening file...");
    file.open();
    alert("writing file..");
    file.writeline(str);
    alert("closing file");
    file.close();

    alert("Token!!!!: " + "\n" + response.token);

    myVehicleObjects.push(response.myVehicleObject);
    myFinancialObject.push(response.myFinancialObject);

    alert("Object Vehicle: " + "\n" + myVehicleObjects.length);
    alert("Object Financial: " + "\n" + myFinancialObject.length);

    myVehicleObjects.forEach(function (veh) { alert(JSON.stringify(veh)); });
    myFinancialObject.forEach(function (fin) { alert(JSON.stringify(fin)); });
    //myVehicleObjects.forEach(function (veh) { alert(veh.Vehicle.VinNumber); });

    alert("SPRAWDZAM VIN: " + myVehicleObjects[0].Vehicle.VinNumber);
    alert("SPRAWDZAM TYP: " + myVehicleObjects[0].Type);
 
});

Z góry dzięki za pomoc :)

2 odpowiedzi

0 głosów
odpowiedź 24 czerwca 2018 przez penera Gaduła (4,040 p.)

Kod z SO od użytkownika Kanachu:
 

// Function to download data to a file
function download(data, filename, type) {
    var file = new Blob([data], {type: type});
    if (window.navigator.msSaveOrOpenBlob) // IE10+
        window.navigator.msSaveOrOpenBlob(file, filename);
    else { // Others
        var a = document.createElement("a"),
                url = URL.createObjectURL(file);
        a.href = url;
        a.download = filename;
        document.body.appendChild(a);
        a.click();
        setTimeout(function() {
            document.body.removeChild(a);
            window.URL.revokeObjectURL(url);  
        }, 0); 
    }
}

 

Działa podobno na  Chrome, FireFox and IE10

Jeżeli myślałeś o zapisie pliku na dysku z poziomu JavaScript (bez wybierania przez użytkownika miejsca docelowego)
to nie ma na to szans ze względów bezpieczeństwa. Jedyne pliki jakie możesz tworzyć bez wiedzy użytkownika to cookies

0 głosów
odpowiedź 24 czerwca 2018 przez Comandeer Guru (604,400 p.)
A próbowałeś użyć jakiegoś API, np. https://developer.chrome.com/apps/fileSystem

Samo File jedynie reprezentuje plik, nie tworzy.

Podobne pytania

0 głosów
0 odpowiedzi 156 wizyt
pytanie zadane 23 czerwca 2018 w JavaScript przez penera Gaduła (4,040 p.)
0 głosów
0 odpowiedzi 140 wizyt
pytanie zadane 10 września 2017 w JavaScript przez Filip Bartosiak Nowicjusz (120 p.)
0 głosów
1 odpowiedź 105 wizyt
pytanie zadane 1 listopada 2019 w JavaScript przez Virius Początkujący (490 p.)

92,830 zapytań

141,771 odpowiedzi

320,817 komentarzy

62,159 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...