Не удается загрузить PDF-файл в хранилище Firebase

#ios #swift #firebase #pdf #firebase-storage

#iOS #swift #firebase #PDF #firebase-хранилище

Вопрос:

Мне нужно загрузить PDF-файл в хранилище Firebase, и я работаю со своим симулятором. Но когда я тестирую на реальном устройстве, я получаю бесконечный цикл загрузки…

Я искал решения и прочитал, что мне нужно putData вместо PutFile и добавить metadata.ContentType . Я выполнил эти 2 шага, но, к сожалению, он по-прежнему не работает на реальном устройстве…

Вот моя функция:

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

Комментарии:

1. Я должен использовать putData вместо PutFile неточно, и нет причин конвертировать ваш файл в NSData или использовать метаданные. Вы можете загрузить его непосредственно как просто файл. См. Руководство по началу работы с Firebase Загрузка из локального файла . Этот код работает — мы используем его постоянно.