このブログを検索

2015年4月20日月曜日

[Android][Openshift]AndroidからOpenshiftサーバへのファイル転送

Android側からPOST通信にてOpenshiftサーバへファイルを送る方法です.
サーバ側はOpenshiftでなくてもなんでもいいですが,PHPで受け取ると仮定します.

★サーバ側(test.php)




これ自体はどこかのサイト様を真似させていただきました.
※無断転載等ご指摘頂いた際は削除いたしますのでご連絡ください.

★Android側
まず,どこかからhttpmime-4.2.1.jarをDLしてきます.
※現在最新版の4.4.1では謎のエラーが発生したので4.2.1を推奨します.

DLしたファイルをlib配下に配置するか,ビルドパスを通します.

ファイルを送りたい場所で以下を記述します.




これでOK.Android側からはMultipartEntityを使ってファイルなどをPOSTすることが出来ます.
ファイルを送る場合は,FileBodyを,文字列を送る場合はStringBodyをつかいます.
なお,これらの動作は遅延等を考慮しバックグラウンド動作させるのがベターなようです.
その辺はAsyncTaskでググりましょう.

また,本ソースコード内には適用しておりますが,以下の点でつまずいたので追記します.

★ $_FILES[ 'picture' ][ 'name' ]が文字化けする
送信側で文字コード指定をしているにもかかわらず,ファイル名が???に文字化けしました.
色々なパターンを試したがダメで,結果ファイル名だけ別途POSTすることで回避しました.
StringBodyは文字化けしない様子です.