2016-04-13 11 views
2

次のコードはiOS9で正常に動作しますが、iOS8で動作するとエラーになり、Amazonはエラー400を返します。 :NSATAをPreSigned URLからS3のAlamofire.upload(...)がiOS 8で動作しない

  • 接続= close; "Content-Type" = "application/xml";日付= "Wed、 1314年4月13日12:19:21 GMT";サーバー= AmazonS3。 ...

NSDataのはイメージであり、Content-Typeのは、 "バイナリ/ octet-streamの" としてそれを保存しないようにアマゾンに指示され、 "画像/ PNG" です。答えに私を導い

func uploadFile(locationURL: String, http: Alamofire.Method, mimeType: String, fileData: NSData) -> ApiCaller { 
    Alamofire.upload(http, locationURL, headers: ["Content-Type": mimeType], data: fileData) 
     .progress { bytesWritten, totalBytesWritten, totalBytesExpectedToWrite in 
      if let uploadProgress = self.uploadProgress { 
       uploadProgress(bytesWritten, totalBytesWritten, totalBytesWritten); 
      } 
     } 
     .response { (req, res, json, error) in 
      self.returnResult(req, res: res, json: json, error: error, tag: 0) 
      return(); 
     } 
    return self; 
} 

答えて

1

この男は:Other guy having similar issue.

それはAlamofireでマネージャーセッションのHTTPAdditionalHeadersがiOSの8でこれを好きではなかった私の以前の呼び出しやAmazon S3からのヘッダを持っていたことが判明します。

私が必要としていたのは、.upload(...)関数を使う前にヘッダーをクリアすることでした。

Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders = [:]; 
+0

3/17現在、現在の構文は 'Alamofire.SessionManager.default.session.configuration.httpAdditionalHeaders = [:]'です。 – Guig

関連する問題