LoginSignup
47
49

More than 5 years have passed since last update.

Alamofireでmultipart/form-dataリクエスト

Last updated at Posted at 2015-08-30

Alamofire/Alamofireでの multipart/form-data リクエストのやり方です。
元々もサポートされてませんでしたが、バージョン1.3.0から利用可能になりました。

サンプルコード

これからリクエストするAPIは

  • type: "image" or "video" の文字列値を取りうる
  • data: 画像 or 動画のバイナリデータ

の2つのパラメータを受け付けるとします。

Alamofire.upload(.POST,
        URLString: "https://api.golog13.com/v1/upload",
        headers: nil,
        multipartFormData: { multipartFormData in
            // 文字列データはUTF8エンコードでNSData型に
            multipartFormData.appendBodyPart(data: "image".dataUsingEncoding(NSUTF8StringEncoding)!, name: "type")
            // バイナリデータ
            // サーバによってはファイル名や適切なMIMEタイプを指定しないとちゃんと処理してくれないかも
            multipartFormData.appendBodyPart(data: data, name: "data", fileName: "test.png", mimeType: "image/png")
        },
        // リクエストボディ生成のエンコード処理が完了したら呼ばれる
        encodingCompletion: { encodingResult in
            switch encodingResult {
            // エンコード成功時
            case .Success(let upload, _, _):
                // 実際にAPIリクエストする
                upload.response { request, response, data, error in
                    if let error = error {
                        println("error: \(error)")
                    }

                    // ここからレスポンスを受け取って処理をする..
                }
            // エンコード失敗時
            case .Failure(let encodingError):
                println(encodingError)
            }
        }
)
47
49
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
49