我尝试通过 AlamofireImage 框架从 Amazon S3 服务器下载图像。

S3 服务器上的图像,使用 'Content-Type' = 'binary/octet-stream' 保存。

一开始我得到了错误:

Failed to validate response due to unacceptable content type.

因此,我尝试更改/更新 HTTP header 的请求以支持二进制/八位字节流'

我更新了方法:
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 框架中的私有(private)方法这一事实。

我想知道是否有一种优雅的方法来解决这个问题,因为我无法更改 S3 服务器中的图像“内容类型”。

谢谢

最佳答案

执行 Request.addAcceptableImageContentTypes(["binary/octet-stream"]) 应该是让它工作所需的全部。

如果您使用的是 af_setImageWithURL,则存在一个错误,即它未使用可接受的ImageContentTypes。 AlamofireImage 2.2.0 修复了这个问题。

关于ios - 通过带有 Content-Type : 'binary/octet-stream' 的 AlamofireImage 框架下载图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33876966/

10-11 09:23