2017-05-16 6 views
2

Ich habe meine App mit dem Firebase Storage verbunden, wo meine 19ea PDF-Dateien existieren.So speichern Sie PDF-Dateien aus Firebase Storage in App-Dokumenten für zukünftige Verwendung?

Ich möchte diese Dateien herunterladen und lokal für die zukünftige Verwendung speichern.

Diese PDF-Dateien werden in UIWebviews verwendet, müssen jedoch möglicherweise rechtzeitig aktualisiert werden. Daher habe ich das Versionskontrollsystem mit der Firebase-Datenbank konfiguriert, sodass ich die neueren Versionen pushen kann, wenn ich die Dateien im Speicher aktualisiere.

Also, wie kann ich diese Dateien lokal speichern? (zu einem Ordner wie: user/myapp/Dokumente/PDF etc?)

Auch, wie kann ich überprüfen, ob dieser Ordner Dokumente enthält und wie man sie vor dem Herunterladen neuer Dateien löschen?

Hier ist, was ich bisher habe.

Ich schätze all die Hilfe.

// Firebase Storage Connection 
static var refStorage:FIRStorageReference? 
static var dataPDF = [NSData]() 

func newDataDownload(){ 

// Compare Current Data Version with Online Data Version 
if myFirebaseData.localDataVersion < myFirebaseData.onlineDataVersion { 

    // Set Firebase Storage Reference 
    myFirebaseData.refStorage = FIRStorage.storage().reference() 

    for i in 1...myFirebaseData.onlineTotalPDFCount { 


     // Create a reference to the file you want to download 
     let pulledPDF = FIRStorage.storage().reference().child("/PDF/\(i).pdf") 

     // Create local filesystem URL 
     let localURL = URL(string: "myApp/Documents/PDF/\(i)")! 

     pulledPDF.data(withMaxSize: myFirebaseData.maxPDFdownloadSize, completion: { (downPDF, err) in 
      if err == nil { 
       // Accessed the data 
       myFirebaseData.dataPDF.append(downPDF! as NSData) 
       print(myFirebaseData.dataPDF) 


      } else { 
       // If there is an error print it 
       print(err.debugDescription) 
      } 
     }) 
    } 
} 

// If Data is successfully downloaded update Local Data Version 
myFirebaseData.localDataVersion = myFirebaseData.onlineDataVersion 

Antwort

0

Verwenden storageRef.write(toFile: completion:) (docs), wie:

// Create a reference to the file you want to download 
let pdfRef = storageRef.child("files/file.pdf") 

// Create local filesystem URL 
let localURL = URL(string: "path/to/local/file.pdf")! 

// Download to the local filesystem 
let downloadTask = pdfRef.write(toFile: localURL) { url, error in 
    if let error = error { 
    // Uh-oh, an error occurred! 
    } else { 
    // Local file URL for "path/to/local/file.pdf" is returned 
    } 
} 

Beachten Sie, dass Sie nur auf /tmp und /Documents aufgrund App Sandbox-Anforderungen (siehe Downloading Firebase Storage Files Device Issue für ein Beispiel, wie dies nicht gelingt sonst) schreiben kann.

Verwandte Themen