2015-11-23 75 views
2

我嘗試通過AlamofireImage框架從Amazon S3服務器下載圖像。通過AlamofireImage框架通過Content-Type下載圖像:'binary/octet-stream'

S3服務器上的圖像,保存爲'Content-Type'='binary/octet-stream'。

在開始的時候,我得到了錯誤:

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服務器中更改圖像的「內容類型」。

感謝

回答

3

做Request.addAcceptableImageContentTypes([「二進制/八位字節流」])應該是所有你需要得到它的工作。

如果您使用的是af_setImageWithURL,則存在未使用acceptableImageContentTypes的錯誤。 AlamofireImage 2.2.0修復了這一問題。

0

在Swift 3.2中,它稍有不同。

 let request = URLRequest(url: URL) 
     DataRequest.addAcceptableImageContentTypes(["binary/octet-stream"]) 
     AlamoDownloader.shared.imageDownloader.download(request){ response in 

DataRequest是Alamofire公共類。