如何将Firebase存储中的PDF文件保存到App文档中以备将来使用?

时间:2017-05-16 16:09:57

标签: ios swift pdf firebase firebase-storage

我已将我的应用与我的19ea PDF文件存在的Firebase存储连接。

我想下载这些文件并将其保存在本地以备将来使用。

这些PDF文件将在UIWebviews中使用,但可能需要及时更新。因此,我已经使用Firebase数据库配置了版本控制系统,因此当我更新存储中的文件时,我将能够推送更新的版本。

那么,我如何在本地保存这些文件? (到一个文件夹,如:user / myapp / Documents / PDF等?)

另外,我如何检查该文件夹是否包含任何文件以及如何在下载新文件之前将其删除?

这是我到目前为止所得到的。

我感谢所有的帮助。

// 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

1 个答案:

答案 0 :(得分:0)

使用storageRef.write(toFile: completion:)docs),例如:

// 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
  }
}

请注意,由于应用沙盒要求,您只能写入/tmp/Documents(有关此方法失败的示例,请参阅Downloading Firebase Storage Files Device Issue。)