我需要将PDF文件上传到Firebase Storage,并且可以与我的模拟器一起使用。但是,当我在真实设备上进行测试时,会遇到无限的加载循环...
我搜索了解决方案,并读取到必须以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)
}
}
}
}
}
}
}