2016-04-05 16 views
2

Angenommen, ich habe ein Array von benutzerdefinierten Dateien.JavaScript & HTML-Datei-API- kann ein JavaScript-Objekt, das auf einem Dateiobjekt basiert, immer noch den Speicherort der Datei enthalten?

In meiner Anwendung entspricht jede ausgewählte Datei einer Person. Sobald der Benutzer die Dateien auswählt, erscheint eine Tabelle. In der linken Spalte steht der Name jeder Datei. In der rechten Spalte muss der Benutzer den Namen der relevanten Person eingeben. Sobald alle Namen ausgefüllt sind, kann der Benutzer die Dateien hochladen. Da Hunderte von Namen ausgefüllt werden könnten, möchte ich in der Lage sein, den Fortschritt des Benutzers regelmäßig in localStorage zu speichern, falls die Seite aktualisiert wird.

Ich kann jedes Dateiobjekt (var thisFile) zu einem Upload-Skript übergeben und der Browser weiß, wo die Datei zu finden ist.

Allerdings möchte ich in der Lage sein, die Liste der ausgewählten Dateien in localStorage zu speichern, und JSON.stringify wird ein Dateiobjekt ausziehen.

Also sagen, ich zuerst ein Javascript-Objekt basierend auf dem Dateiobjekt erstellen (var Datei unten).

Wenn ich dann var Datei an das Upload-Skript übergeben, wird der Browser immer noch in der Lage sein, die Datei zu finden, oder wäre der vollständige Pfad zur Datei verloren gegangen?

for (var i = 0; i < userSelectedFiles.length; i++) { 
 
    //File object (Stripped out by JSON.stringify). 
 
    var thisFile = userSelectedFiles[i]; 
 
    //Create a javascript object based on the file object (Not stripped out by JSON.stringify). 
 
    var file: { 
 
    'lastModified': thisFile.lastModified, 
 
    'lastModifiedDate': thisFile.lastModifiedDate, 
 
    'name': thisFile.name, 
 
    'size': thisFile.size, 
 
    'type': thisFile.type 
 
    }, 
 
}

+1

Was möchten Sie tun? – Lewis

+0

Sie können das Ereignis "onbeforeunload" verwenden, um Daten zu speichern, bevor die Seiten entladen werden. Außerdem sollten Sie 'JSON.stringify' nicht für' File'-Objekte verwenden. – Lewis

+0

@AJP Bitte denken Sie daran, Ihre Frage zu bearbeiten/zu aktualisieren, um den obigen Kommentar in den Hauptteil der Frage einzubeziehen und nicht nur .as Kommentar – sideshowbarker

Antwort

0

Nach mehr Forschung, ich habe festgestellt, dass eine Datei nicht in localstorage gespeichert werden kann, nachdem ein Browser neu gewählt werden muss, die Position einer Datei Refresh-.

0

Sie können Dateien im Offline-Speicher speichern.

  1. Lesen Sie diesen Artikel über die Offline-Speicherung offline_storage und quota-research
  2. lesen Dokumentation LocalFileSystem
  3. Sie Offline-Speicher hier testen können test page
  4. Wie link

Hier verwenden ist das Beispiel für WebKit Browser (Chrome und Opera) zum Erstellen einer Datei -> info.txt mit Ihrem Inhalt, müssen Sie einen Benutzer von Stor fragen Die Altersquote beträgt in diesem Beispiel 10 MB.

var maxSize = 1024 * 1024 * 10; 

    var onError = function() {}; 
    var requestFs = window.requestFileSystem || 
         window.webkitRequestFileSystem || 
         window.mozRequestFileSystem || 
         window.msRequestFileSystem || undefined; 

    var onRequest = function(grantedSize) { 

     requestFs(window.PERSISTENT, grantedSize, function(filesystem) { 

     filesystem.root.getFile("info.txt", {create: true}, function(DatFile) { 

      DatFile.createWriter(function(DatContent) { 

      var blob = /** your file or blob*/; 

      DatContent.write(blob); 

      }); 

     }); 

     }, onError) 

    }; 

    navigator.webkitPersistentStorage.requestQuota(maxSize, onRequest, onError);