LoginSignup
23
23

More than 5 years have passed since last update.

【Swift/php】Alamofireで画像upload&パラメータをPOST

Last updated at Posted at 2015-12-22

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'];

以上になります。

23
23
0

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
23
23