我尝试通过AlamofireImage框架从AmazonS3服务器下载图像。
S3服务器上的图像,以"内容类型"="二进制/八位字节流"保存。
一开始我得到错误:
Failed to validate response due to unacceptable content type.
因此,我尝试更改/更新HTTP标头的请求,以便支持二进制/八位字节流的
我更新了方法:
private func URLRequestWithURL(URL: NSURL) -> NSURLRequest
在UIImageView+AlamofireImage.swift文件中:
private func URLRequestWithURL(URL: NSURL) -> NSURLRequest {
let mutableURLRequest = NSMutableURLRequest(URL: URL)
mutableURLRequest.addValue("binary/octet-stream", forHTTPHeaderField: "Content-Type")
return mutableURLRequest
}
并且仍然不起作用,就在我添加后:
let contentTypes: Set<String> = ["Content-Type", "binary/octet-stream"]
Request.addAcceptableImageContentTypes(contentTypes)
问题已经解决了,但我真的不喜欢我在AlamofireImage框架中更改了一个私有方法。
我想知道是否有一种优雅的方法来解决这个问题,因为我无法更改S3服务器中的图像"内容类型"。
感谢
Doing Request.addAcceptableImageContentTypes(["binary/octet stream"])应该是使其工作所需的全部内容。
如果您使用的是af_setImageWithURL,则存在一个错误,即它没有使用可接受的ImageContentTypes。AlamofireImage 2.2.0修复了这个问题。
在Swift 3.2中略有不同。
let request = URLRequest(url: URL)
DataRequest.addAcceptableImageContentTypes(["binary/octet-stream"])
AlamoDownloader.shared.imageDownloader.download(request){ response in
DataRequest是一个Alamofire公共类。