Ошибка ответа загрузки хранилища Firebase - PullRequest
0 голосов
/ 22 мая 2018

Мне удалось успешно загрузить изображения в хранилище Firebase, но я не смог успешно загрузить изображение.

Я попытался загрузить изображения всеми тремя из предложенных способов в руководствах по хранению данных Firebase:

1) Загрузить в NSData в памяти 2) Загрузить в NSURL, представляющий файл на устройстве 3)Создайте NSURL, представляющий файл онлайн

Ниже приведен пример двух разных попыток:

func loadProfileImage() {
        guard let currentUser = Auth.auth().currentUser else { return }
        let profilePhotoFile = "ProfileImages/" + currentUser.uid
        let reference = Storage.storage().reference(withPath: profilePhotoFile)

# 1-я попытка загрузки в память:

    reference.getData(maxSize: 1 * 1024 * 1024) { (data, error) in
        if let error = error {
            print("an error occurred: \(error)")
            print("see data response: \(data)")
        }  else {
            self.profileView.image = UIImage(data: data!)
        }
     }

# 2-я попыткас URL-адресом для загрузки:

     reference.downloadURL { (url, error) in
        if let error = error {
            print(error)
        } else {
            self.profileView.sd_setImage(with: url, placeholderImage: 
           #imageLiteral(resourceName: "placeHolderProfileView")) { 
         (image, error, type, reference2) in
                print("reference location of image in the google 
     bucket: \(reference2)")
                print("error retrieving image: \(String(describing: 
            error))")
                print("type: \(type)")
                print("image details: \(String(describing: image))")
            }

        }

    }
}

Также попытался использовать alamofire вместо SDWebImage, чтобы увидеть, был ли код ошибки таким же, и тот же, см. ниже:

Ошибка домена = FIRStorageErrorDomain Code = -13000 "Произошла неизвестная ошибка, проверьте ответ сервера. "UserInfo = {object = ProfileImages / 6I2RhzFI3edYNph9J4WsaXXXX, ResponseErrorCode = 100, bucket = bXXXX-production.appspot.com, NSLocalizedDescription = Произошла неизвестная ошибка, пожалуйста, проверьте ответ сервера.28 ,acity = 28, bytes = 0x1c1e01bb000000002607f8b040090813 ... 0000200a00000000}, _kCFStreamErrorCodeKey = 100}

Я проверил и перепроверил местоположение корзины хранения Google и считаю, что у меня есть правильное местоположение ссылки (используя то же самое, что и загрузка)путь к файлу, который работает правильно).

Любая помощь будет высоко ценится

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Понял, что ошибка была в заголовках, которые были включены при загрузке изображения:

Я первоначально перечислил следующее при загрузке, закомментировав их, я смог успешно загрузить с SDWebImage и предложение от vbuzze,

let uploadMetadata = StorageMetadata () uploadMetadata.contentType = "image / jpeg" uploadMetadata.customMetadata = ["Имя профиля": currentUser.displayName] как?[Строка: Строка]

0 голосов
/ 22 мая 2018

Вот и все:

func downloadImage(url : String,
                       completionHandler: @escaping (Bool?, UIImage?, String?) -> Void) -> Void
    {
        var success : Bool = false
        var img : UIImage? = nil
        var errorLog : String? = nil

        let u = URL(string: url)

        let task = URLSession.shared.dataTask(with: u!, completionHandler: { (data, response, error) in

            if error != nil
            {
                errorLog = error?.localizedDescription
                completionHandler(success, img, errorLog)
            }
            else
            {
                success = true
                img = UIImage(data: data!)
                completionHandler(usuccess, img, errorLog)
            }

        })

        task.resume()

    }

Получить URL-адрес с помощью:

imgReference.downloadURL { (url, error) in
   guard let url = url else { return } 
   urlString = url.absoluteString
   //do something with the urlString (such as download image)
}
...