#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 Загрузка из локального файла . Этот код работает — мы используем его постоянно.