Chrome Apps: Wie speichere ich Blob-Inhalte im Hintergrund im Dateisystem?

In Chrome Apps lade ich mithilfe von JavaScript XHR einen Blob-Inhalt von einem Server herunter (insbesondere $ http GET mit dem Antworttyp 'blob').

Wie soll ich das im Dateisystem der Chrome-Anwendung speichern?

Zurzeit wird ein Angular-Wrapper für die HTML5-Dateisystem-API verwendet.https: //github.com/maciel310/angular-filesyste

Ich möchte dem Benutzer kein Popup anzeigen (daher kann ich @ nicht verwendchrome.fileSystem. chooseEntry )

Daschrome.fileSystem.requestFileSystem API wird nur von Nur-Kiosk-Apps unterstützt. Daher verwende ich HTML5 FileSystem API anstelle von Chrome.

Ich verwende folgenden Code, um XHR zum Abrufen von Blobs zu veranlassen.

 $http({
          url: SERVER_URL+"/someVideo.mp4",
          method: "GET",
          responseType: "blob"
      }).then(function(response) {
          console.log(response);
          fileSystem.writeBlob(response.name, response).then(function() {
             console.log("file saved");
          }, function(err) {
              console.log(err);
          });
      }, function (response) {

      });

Dies ist meine writeBlob-Methode

writeBlob: function(fileName, blob, append) {
    append = (typeof append == 'undefined' ? false : append);

    var def = $q.defer();

    fsDefer.promise.then(function(fs) {

        fs.root.getFile(fileName, {create: true}, function(fileEntry) {

            fileEntry.createWriter(function(fileWriter) {
                if(append) {
                    fileWriter.seek(fileWriter.length);
                }

                var truncated = false;
                fileWriter.onwriteend = function(e) {
                    //truncate all data after current position
                    if (!truncated) {
                        truncated = true;
                        this.truncate(this.position);
                        return;
                    }
                    safeResolve(def, "");
                };

                fileWriter.onerror = function(e) {
                    safeReject(def, {text: 'Write failed', obj: e});
                };

                fileWriter.write(blob);

            }, function(e) {
                safeReject(def, {text: "Error creating file", obj: e});
            });

        }, function(e) {
            safeReject(def, {text: "Error getting file", obj: e});
        });

    }, function(err) {
        def.reject(err);
    });

    return def.promise;
},

Das zeigtSECURITY_ERR wieIt was determined that certain files are unsafe for access within a Web application, or that too many calls are being made on file resources.

Was ist die Lösung dafür?

Ich habe versucht mit--allow-file-access-from-files flag beim Starten der App. Es hilft nicht.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage