スマートフォンからのファイルアップロードを考える

スポンサーリンク

PCからファイルをアップロードする時は、

<input type="file">

のようなタグを使えばすんなりアップロードできるのですが、スマートフォンではそう上手く行かないことが判明。

実はスマートフォンでは inuptタグ の対応状況がよろしくないのです。
2015年11月20日段階では多くの最新デバイスで対応しています。

でもスマートフォンからファイルを取得したい時ってあると思います。
その時の対応方法を考えてみました。

スマートフォンからのファイルアップロード対策

ここでは、

ユーザにメールでデータを添付送信

メールのパース

データを取得

というフローで解決していきます。
ざっくりと図で表すと下記のような感じ。
random-130526231220-phpapp01

メールデータのパース手段として PEARmimeDecode を使います。

この方法を使えばandroidはほぼ網羅できると思いますが、実はiPhoneは網羅できていません。

なぜか。

それは、iPhoneには「メール」と「MMS」の2種類の送信方法があるからです。
この場合の方法だと「MMS」では正常に動作しません。

動作しない理由は2つあります。
1.本文を書かずに画像を送信すると、content-typeが「multipart」ではなく「image」になる。
2.件名をOFFに出来る為、ユニークな情報を持たせることが難しい。

この2つをクリアする為に以下対策を行います。

1. [image]の場合にも処理を追加する。
2. 送信先のアドレスをユニークなものにする。

この2つの対策を考慮に入れたフロー図は以下のようになります。
random-130526231220-phpapp01

このようにMMSのことも考慮して構築すると全てのデバイスに対応したデータ取得ができます。

slideshareに登壇資料をアップしました。よろしければどうぞ。

スポンサーリンク
スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク