UIImage无法从AWS S3 URL加载

问题描述 投票:0回答:1

我正在尝试从URL下载图像,但是图像无法加载。

我将该类从Objective-C移植到swift,并且代码的这一特定部分停止工作。我的网址看起来像这样。有人可以告诉我我在做什么错吗?

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

swift amazon-s3 uiimage sdwebimage
1个回答
0
投票

显然,由于未加载图像,因此它表示imagenil

我建议您将代码转换为以下代码并适当处理错误:

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

如果没有错误,请检查其他变量的内容-它们可能会为您提供有关发生问题的线索。

© www.soinside.com 2019 - 2024. All rights reserved.