Alamofireで画像やファイルをアップロードしつつ、パラメータを渡す方法がわからなかったところ
下記を参考にすることでクライアント側の対応は行うことが出来ました。
ありがとうございます。
1,AlamofireでMultipartFormDataをパラメータ付きでポストする - Qiita
2,Alamofireでmultipart/form-dataリクエスト - Qiita
しかし、PHP側での受け取り方で手こずったのでメモしておきます。
※Swift側の記述は2,の記事を参考に用意済みという前提で進みます
Viewcontrolller.swift
// POSTしたいパラメータ POST値を受け取る際にkeyになるのがnameのstringです。今回はuserIdという文字列でやっていきます
multipartFormData.appendBodyPart(data: "お好きな文字列".dataUsingEncoding(NSUTF8StringEncoding)!, name: "userId" )
// 画像データ nameが受け取る際のkeyになるので重要です(値はなんでもいいけどわかりやすくimgにしておきます)
multipartFormData.appendBodyPart(data: data, name: "img", fileName: "test.png", mimeType: "image/png")
画像、ファイルの受け取り方
get.php
//アップロードが成功されていれば一時保存されている箇所が「tmp_name」に格納されています(自動)
$filePath = $_FILES['img']['tmp_name'];
//そのtmpパスからfileGetContentsで取得!後はお好きなようにどうぞ
$fileData = file_get_contents($filePath);
//自分の場合はGDライブラリを使用していたので下記のような記載で保存しました
//※GDライブラリはPHP4.3以上であれば特にインストールせず使えるようです
$tmpImg = imagecreatefromstring($fileData);
// 圧縮処理、リネームなど処理行う
//サーバー上の格納場所に保存する
$result = ImageJPEG($tmpImg, "サーバー上の保存パス");
POSTパラメータの受け取り方
get.php
//普通にPOSTの値受け取りでいけます
$userId = $_POST['userId'];
以上になります。