プロが教えるわが家の防犯対策術!

iアプリ携帯で撮影した画像をサーバーにアップロードし、
アップロードした画像をPHPでサーバーに保存したいと考えています

自分なりにネットや書籍を調べたのですが
 ・iアプリで画像をアップロードしcgiをつかってサーバーに保存
 ・HTMLで画像をアップロードし、 PHPをつかってサーバーに保存
は情報(サンプルコード)はあるのですが、
iアプリ→PHPの方法(コーディング)がわかりません

特に、PHPがアップロードした画像データを取得する方法が
わかりません
HTMLからPHPを呼んだ場合は「$_FILES」を使用するのですがiアプリの場合はどう実現したらいいのでしょうか?

ご存知の方がいらっしゃいましたら是非お願いいたします

A 回答 (4件)

http://d.hatena.ne.jp/nacookan/20080108/1199774995
ちょっと調べてみました。
こちらのブログに、javaアプレットでファイルのアップロードの実装の仕方が書いてありました。
後は、iアプリでソレを行うためのクラスが利用可能であれば出来るようです。

この回答への補足

hogehoge78様
回答ありがとうございます
iアプリで行うためのクラスを調査中です
結果が出てからお返事をしようと思っていたのですがまだ見つからず

お返事が遅くなってすみません
改めて結果を書き込みます

補足日時:2009/12/05 14:14
    • good
    • 0

iアプリで実装するにしても、なんにしても、ファイルをPOSTして、そのPOSTされたデータをPHPで受信するのであれば、Webサーバに対して、HTTPプロトコルでデータを送信しなければなりません。



例えば、普通のフォームで、単純にINPUTタグに記述された内容を送信した場合も、HTTP通信してますが、その場合は、
=============================================================
POST /php/path HTTP1.0
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 47

input_name=input_value&input_name2=input_value2
=============================================================
このようなHTTPヘッダ(とPOSTされた内容)をWebサーバに送信してやり、PHPでその結果を受信し、$_POSTにデータを格納してます。

そして本題のファイルのアップロードに関しては
=============================================================
POST /php/path HTTP1.0
Host: www.example.com
Content-Type: multipart/form-data
Conent-Length: ファイルの長さ

-----------------------------boundary
Content-Disposition: form-data; name="test"; filename="ファイルの名前"
Content-Type: ファイルタイプ

コンテンツの内容(つまり画像だったら画像のバイナリが記述される)
-----------------------------boundary--
=============================================================
このようなHTTPヘッダを記述してやる必要があります。
iアプリで行う場合でも、HTTP通信を行うためのメソッドなりクラスなりライブラリを利用して、上記のような生のHTTPヘッダを記述し、送信するような流れになると思います。


もし、iアプリにこだわっておらず、簡単に済ませる場合は、添付ファイル付のメールでサーバに送信して、PHPで処理するという方向ではどうでしょう。つまり携帯電話の空メールで登録するという処理と近い処理で出来るので割かし簡単だと思います。
http://hal456.net/qdmail_rec/&category?cat=%E6%9 …
このようなライブラリもあります。

この回答への補足

hogehoge78様

回答ありがとうございます

HTTPヘッダの編集方法について質問です
Content-Typeについては「setRequestProperty」で設定できるのですが、Content-Dispositionをどのように設定するのかを調べたのですがわかりませんでした

またHTMLは、
<form action="file_upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="upfile"><br>
<input type="submit" name="submit" value="SEND">
</form>
と記述した場合、$_FILES['upfile']['name']にアップロードしたファイル名が格納されると思いますが、iアプリからHTTP通信をした場合はどのように、ファイル名を取得するのでしょうか?

今回はiアプリを前提としています
残念ながらメールでのアップロードは使えないのですが
今後他の機会があれば参考にさせていただきたいと思います

補足日時:2009/12/03 12:10
    • good
    • 0

#1です。


Sourceがありました。
ちょっと古いですが、送受信の所は参考になると思います。
http://www.nakka.com/i/npop/
inpop.cgiがサーバ側で動くものです。

バイナリというかデータを送受信するときに、何をやろうとするのかなどのコマンド交換が必要なケースがありますよね。
ところが、データなのかコマンドなのかの判断がしにくいために特定の文字列の連続がコマンドに解釈されて不具合を起こす場合があります。

上記のSourceでも特定の文字は送れないようです。
なので、何らかのコードにエンコードするなどちょっと工夫が必要になるかと思います。

この回答への補足

MOMON12345様

回答ありがとうございます
サンプルソースありがとうございます

たびたび申し訳ありませんが、質問です
基本的にcgiでもPHPでもiアプリ側のコーディングに関しては同じ様に考えてOKということでしょうか?

補足日時:2009/12/03 11:43
    • good
    • 0

iアプリからはHTTPの通信しかできませんので、フォームを使ったPOSTを行うことになります。


バイナリを通せるように工夫するか、データの方を加工するかも必要でしょう。
httpdサーバ側は普通にブラウザからPOSTされたデータを読むようにすればOKです。

なおiアプリは、そのアプリをダウンロードしたサーバでかつ名前(FQDN)が付いているものとしか通信が出来ません。

この回答への補足

ここに書くべき内容を「この回答へのお礼」に記入してしまいました
申し訳ありません

補足日時:2009/12/02 22:48
    • good
    • 0
この回答へのお礼

MOMON12345様

早速の回答ありがとうございます

私の知識不足のため、何点か質問させてください

>フォームを使ったPOSTを行うことになります。

「フォームを使ったPOST」の実現方法を教えていただけますか?
HTMLの場合FORMタグを使用するはわかるのですが
iアプリではどのようにするのでしょうか?
(CanvasやPanelにフォームを埋め込む?
 iアプリにHTMLが書き込める?等々)

>バイナリを通せるように工夫するか、
大変申し訳ありませんが、バイナリを「通す」の意味が難しいです

>データの方を加工するかも必要でしょう。
cgiをつかったサンプルプログラムで画像データを出力ストリームにセットしていたのですが、そのような処理の事でしょうか?

質問の文章が稚拙で分かりづらいかもしれませんが、よろしくお願いいたします

お礼日時:2009/12/02 22:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!