2013-11-03 15 views
5

Próbuję zapisać wiele plików do katalogu - w jednej operacji. Jeśli poprawnie zrozumiem, chrome fileSystem api documentation, powinno to być możliwe, gdy używam opcji openDirectory dla chrome.fileSystem.chooseEntry. Czy to jest nawet dozwolone?
Jednak dokumentacja jest bardzo minimalistyczna i również nie znalazłem żadnych przykładów za pośrednictwem google.Jak zapisywać wiele plików w aplikacji chrome

Więcej background:
Mam odpowiednie uprawnienia dostępu do katalogu, a także mieć uprawnienia do zapisu:

/*you need chrome >= Version 31.x [currently chrome beta]*/ 
"permissions": [ 
    {"fileSystem": ["write", "directory"]}, "storage", 
] 

Wtedy pozostaje chrome.fileSystem.chooseEntry (opcje obiektów, funkcja zwrotna) i chrome.fileSystem.getWritableEntry (wpis, funkcja zwrotna), ale nie wiedziałem, czy te funkcje są nawet tym, czego chcę.

Oto jak pojedynczy plik mogą być zapisywane w systemie plików:

chrome.fileSystem.chooseEntry({type:"saveFile", suggestedName:"image.jpg"}, 
    function(entry, array){ 
     save(entry, blob); /*the blob was provided earlier*/ 
    } 
); 

function save(fileEntry, content) { 
    fileEntry.createWriter(function(fileWriter) { 
     fileWriter.onwriteend = function(e) { 
      fileWriter.onwriteend = null; 
      fileWriter.truncate(content.size); 
     }; 
     fileWriter.onerror = function(e) { 
      console.log('Write failed: ' + e.toString()); 
     }; 
     var blob = new Blob([content], {'type': 'image/jpeg'}); 
     fileWriter.write(blob); 
    }, errorHandler); 
} 

Ale w jaki sposób można zaoszczędzić wiele plików, gdy używam chrome.fileSystem.chooseEntry ({type: „openDirectory” ..} lub robi openDirectory udzielić mi tylko do odczytu prawa?

+0

Kontynuacja na http://stackoverflow.com/q/28710804/632951 – Pacerier

Odpowiedz

8

wierzę, że to powinno działać.

chrome.fileSystem.chooseEntry({type:'openDirectory'}, function(entry) { 
    chrome.fileSystem.getWritableEntry(entry, function(entry) { 
     entry.getFile('file1.txt', {create:true}, function(entry) { 
      entry.createWriter(function(writer) { 
       writer.write(new Blob(['Lorem'], {type: 'text/plain'})); 
      }); 
     }); 
     entry.getFile('file2.txt', {create:true}, function(entry) { 
      entry.createWriter(function(writer) { 
       writer.write(new Blob(['Ipsum'], {type: 'text/plain'})); 
      }); 
     }); 
    }); 
}); 
+0

** Wow **. Nie mogę uwierzyć, że to działa, tutorial jest całkowicie cichy. Skąd to wiedziałeś? – Pacerier

Powiązane problemy