iOS app: как использовать kingfisher / sdwebimage для загрузки aws s3 image - PullRequest
0 голосов
/ 11 февраля 2020

Я хочу показать изображения из aws s3 защищенной папки в виде коллекции или в списке в моем проекте swiftui с помощью kingfisher. Но я не смог найти решение для отображения изображений, так как aws требует, чтобы дополнительные заголовки были включены в запрос. Я попытался добавить пользовательский заголовок, упомянутый в Cheatsheet, но ничего не происходит.

1 Ответ

0 голосов
/ 11 февраля 2020

Вы можете выбрать, какой ключ Kingfisher использует для кеша. Итак, создайте предварительно назначенный URL-адрес s3, затем при загрузке изображения используйте ключ s3 в качестве кэша, а не полный предварительно назначенный URL-адрес.

            let getPreSignedURLRequest = AWSS3GetPreSignedURLRequest()
            getPreSignedURLRequest.bucket = media.bucket
            getPreSignedURLRequest.key = media.key
            getPreSignedURLRequest.httpMethod = .GET
            getPreSignedURLRequest.expires = Date(timeIntervalSinceNow: 3600)  // Change the value of the expires time interval as required
            AWSS3PreSignedURLBuilder.default().getPreSignedURL(getPreSignedURLRequest).continueWith { (task:AWSTask<NSURL>) -> Any? in
                if let error = task.error as NSError? {
                    print("Error: \(error)")
                    return nil
                }
                if let presignedURL = task.result {
                    DispatchQueue.main.async {
                        self.imageView.kf.indicatorType = .activity
                        let resource = ImageResource(downloadURL: URL(string: presignedURL.absoluteString!)!, cacheKey: media.key)
                        self.imageView.kf.setImage(with: resource)
                    }
                }
                return nil
            }
...