UIImage не загружается с AWS S3 url - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь загрузить изображение с URL, но изображение не загружается.

Я перенес этот класс из target- C в swift, и эта определенная c часть кода перестала работать. Мой URL выглядит следующим образом. Кто-нибудь может сказать мне, что я делаю не так?

https://mydomain-files.s3.amazonaws.com/files/log/773/IMG_20200408_125029.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=mycredentials%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200413T171303Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=mysignature

cell.previewImageView.sd_setImage(with: url, placeholderImage: UIImage(named: "nodata"), completed: { image, error, cacheType, imageURL in                
      if image != nil {
          cell.previewImageView.image = image
      }
})

Я пытался использовать только https://mydomain-files.s3.amazonaws.com/files/log/773/IMG_20200408_125029.jpg эту часть, и она тоже не работает. Изображение нормально загружается в Volley for Android и в браузере.

Ошибка

Error Domain=SDWebImageErrorDomain Code=1001 "Downloaded image has 0 pixels" UserInfo={NSLocalizedDescription=Downloaded image has 0 pixels})

Редактировать 2:

Я попытался добавить addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) к URL, он просто не работает

1 Ответ

0 голосов
/ 13 апреля 2020

Очевидно, что, поскольку изображение не загружается, это означает, что image равно nil.

Я бы посоветовал вам преобразовать ваш код в приведенный ниже и обрабатывать ошибки соответствующим образом:

cell.previewImageView.sd_setImage(with: url, placeholderImage: UIImage(named: "nodata"), completed: { image, error, cacheType, imageURL in
  if let error = error {
      // Handle errors here
      // It may be as simple as forgetting to whitelist S3 url in Info.plist
  }                
  else if image != nil {
      cell.previewImageView.image = image
  }
})

Если ошибок нет, проверьте содержимое других переменных - они могут подсказать вам, что происходит не так.

...