首页 > 解决方案 > 无法将 PDF 文件上传到 Firebase 存储

问题描述

我需要将 PDF 文件上传到 Firebase 存储,并使用我的模拟器。但是当我在真实设备上测试时,我得到一个无限加载循环......

我搜索了解决方案,并读到我必须使用 putData 而不是 putFile,并添加 metadata.contentType。我遵循了这两个步骤,但不幸的是它仍然无法在真实设备上运行......

这是我的功能:

func uploadDocs(docsArray : [URL], completionHandler: @escaping ([String]) -> ()){
    
    var uploadedDocsUrlsArray = [String]()
    var uploadCount = 0
    let docsCount = docsArray.count
    
    for doc in docsArray{
        
        let docName = UUID().uuidString
        let storageRef = Storage.storage().reference().child("documents").child(docName)
        
        let metadata = StorageMetadata()
        metadata.contentType = "application/pdf"
        
        if let data = NSData(contentsOf: doc) as Data? {
            
            storageRef.putData(data, metadata: metadata) { (_, err) in
                
                if err != nil {
                    print(err!.localizedDescription)
                    return
                }
                
                storageRef.downloadURL { (url, err) in
                    
                    if err != nil {
                        print("Failed to download url:", err!)
                        return
                    } else {
                        
                        uploadedDocsUrlsArray.append(url?.absoluteString ?? "")
                        
                        uploadCount += 1
                        print("Number of documents successfully uploaded: \(uploadCount)")
                        if uploadCount == docsCount{
                            print("All documents are uploaded successfully")
                            completionHandler(uploadedDocsUrlsArray)
                        }
                    }
                    
                }
                
            }
            
        }
        
    }
    
}

标签: iosswiftfirebasepdffirebase-storage

解决方案


推荐阅读