post Image
【Swift3.0】Alamofireで画像&パラメータを送信

元々当記事のようなAlamofireで画像をPostする方法はQiitaにありますが、Swift3.0ではないので躓いたため知見として残します。

以下の記事を参考にしました。ありがとうございます。
【Swift/php】Alamofireで画像upload&パラメータをPOST

ライブラリ

  • Alamofire
  • SwiftyJSON

コード

Sample.swift
Alamofire.upload(
    multipartFormData: { multipartFormData in
        // 送信する値の指定をここでします
        multipartFormData.append(data, withName: "test", fileName: "test.jpeg", mimeType: "image/jpeg")
        multipartFormData.append(sendSTR.data(using: String.Encoding.utf8)!, withName: "userId")
    },
    to: "http://~~~.com/image-upload/",
    encodingCompletion: { encodingResult in
        switch encodingResult {
            case .success(let upload, _, _):
                upload.responseJSON { response in
                    // 成功
                    let responseData = response
                    print(responseData ?? "成功")
                }
            case .failure(let encodingError):
                // 失敗
                print(encodingError)
        }
    }
)

説明

uploadメソッド

Sample.swift
Alamofire.upload()

Alamofireで画像やファイルのアップロードをする際に使うメソッドです。
公式: Uploading Data to a Server

パラメーターの設定

multipartFormDataの中で値を指定します。
下記は各パラメーターです。
画像でもテキストでもmultipartFormData.appendを使います。

画像

Sample.swift
multipartFormData.append(data, withName: "test", fileName: "test.jpeg", mimeType: "image/jpeg")
  • image
    • Data型で使用します。UIImageJPEGRepresentationなどを使い、UIImageから変換しましょう。
  • withName
    • サーバーで受け取る際使用する名前です。サーバー側と名前が一致するかか確認しましょう。
  • fileName
    • ファイルの名前です。
  • mimeType
    • ファイルのフォーマットが何か指定します。jpegであれば"image/jpeg"、pngであれば"image/png"などと指定します

画像は、「画像データ・名前・ファイルネーム・mimeType」を指定します。
これ全てが揃っていないとサーバー側が受け取ってくれない場合があるからです。

これを中途半端にファイルネームを送ってないせいでサーバーが認識してくれない問題に私は当たりました。ご注意ください。

Text

Sample.swift
multipartFormData.append(sendSTR.data(using: String.Encoding.utf8)!, withName: "userId")
  • StringData
    • 第一引数でsendSTRという変数を指定しているところです。dataに変換するため、data(using: String.Encoding.utf8)というメソッドを使用します。
  • withName
    • サーバーで受け取る際使用する名前です。サーバー側と名前が一致するか確認しましょう。

テキストを送る際は簡単です。名前が間違っていないか確認しましょう。

送り先の指定

Sample.swift
to: "http://~~~.com/image-upload/"

toで、送り先URLの指定ができます。
送る際、POSTになりますのでご注意ください。

終わりに

バージョンが変わると今まで使えていたコードが使えない。辛いです。


『 Swift 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。