スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【Swift】Swift + PHPでiOSから画像をアップロードする

iOSのアプリで写真を選択してそれをサーバーにアップしたいということがある。
今回はSwift + PHPでこれを実装する。

実はこちらのブログに詳しい方法が載っており、ご丁寧に動画まで貼り付けてある。
私もこれを参考にして実装した。
が、このブログのコメント欄を見ればわかるように、

「できない!」

という声が多い。
私もかなり悪戦苦闘した。
結果はまりポイントがいくつかあったので当記事を参考にしていただければと思う。
まず、上記のブログに貼り付けられているコードにはいくつか間違いがある。
正確には文字化けのようなもので、ダブルクォーテーションとハイフンがダブルバイトになっているようで、
コメント欄でも

「これでめっちゃ時間食ったぜ。。」

というようなコメントが。
下記にそれを修正したものを掲載するのでコピーペーストする場合はこちらをご利用いただきたい。
説明は後にしてとりあえずSwiftとPHPのコードを下記にまとめる。

Swift


PHP



ちなみに上記のSwiftのコードだけでは不十分で、
実際には画像を選択させるボタン等をViewに設置して、そのボタンが押された時に

pickImageFromLibrary

が呼び出される、というようなUIが必要になる。
ここは省略するが、そこまで知りたい場合は上記のブログに詳しい説明&動画があるので参照のこと。

さて、想定通り処理が行えただろうか?
同じコードでもできるひととできない人がいると思う。
それはPHPファイルが置いてあるサーバーの環境に依存する。
できなかった人は下記のチェックポイントを確認してみてほしい。



1. アップロードするディレクトリおよびその親ディレクトリの権限
PHPではファイルをPOSTで受け取ってそれを指定のディレクトリに保存するという処理を行うが、
保存先に指定しているディレクトリに書き込み権限がないとファイルが置けない。
よって、

$target_dir = "wp-content/uploads/2015/02";

と指定している場合は、このディレクトリの権限を777にしておく必要がある。
なんのことか分からない場合は、この辺を参考に。
そして、このPHPでは

「もし指定のディレクトリが存在しない時には777のディレクトリを作る」

という処理がある。
この処理を行うためにはこのphpファイルを保存しているディレクトリにも777の権限を与えておく必要が有る。


2. php.iniの設定
ざっくり言うと、phpの制限に引っかかっている可能性がある。
phpを扱うサーバには必ずphp.iniという設定ファイルがあり、そこでphpの設定を行っているが、
今回のケースでは下記の設定が該当する。

;POSTデータの最大サイズ ※合計サイズ
post_max_size = 20M

;1ファイルあたりの最大アップロードサイズ
upload_max_filesize = 20M

レンタルサーバーなどを利用している場合は、1ファイルあたりの最大アップロードサイズが2Mくらいになっていることがある。
もしこれが原因だとすれば、試しにめちゃめちゃ軽い画像をアップしてみればわかる。
もし、軽い画像はアップできるのに大きな画像はアップできないのであればこの設定が原因だと思われる。




他にもボトルネックになる部分があるのかもしれないが、少なくとも私の環境ではうまくいったので上記の通りまとめた。


コメント

承認待ちコメント

このコメントは管理者の承認待ちです

コメントの投稿

非公開コメント

PR

PR

プロフィール

何でも書くman

Author:何でも書くman
思ったことや備忘録など、とりあえずなんでも書きます。IT系のことや趣味、生活に関わることなども。

ページの先頭へ戻る
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。