Android(開発)/ネットワークを使ってファイルをアップロードする

最終更新: 2010-03-25 (木) 22:54:51 (1733d)

目次 Edit

バージョンと製造年月日 Edit

Android SDK1.6

ブラウザなら Edit

ブラウザなら

<form action="hoge.php" method="post" enctype="multipart/form-data">
  <input type="file" name="upfile">
  <input type="submit" value="up">
</form>

こんな感じで送る操作を実装する。

ネットワークのライブラリを新しくする Edit

今回multipartのPOSTをしたいのですが、そのライブラリがSDK同梱のものは古くて対応してないので、ここからダウンロードする
HttpComponents - HttpComponents Downloads

ここの

Binary with dependencies

というものを落とす。現在バージョンは
HttpClient 4.0.1

念のためURLズバリも貼っておくか↓コレ
http://ftp.kddilabs.jp/infosystems/apache/httpcomponents/httpclient/binary/httpcomponents-client-4.0.1-bin-with-dependencies.zip

※別に全部フルで書けば古くてもできるんだけど面倒なので新しいの導入

解凍すると

httpcomponents-client-4.0.1/lib

の中にjarがいくつかあるのでこいつらを

  • apache-mime4j-0.6.jar
  • commons-codec-1.3.jar
  • commons-logging-1.1.1.jar
  • httpclient-4.0.1.jar
  • httpcore-4.0.1.jar
  • httpmime-4.0.1.jar

プロジェクトが置いてあるディレクトリの下にlibというディレクトリを作って設置
Eclipseのプロジェクトのビルドパスの設定項目より外部JARの追加ということで参照に追加。

順序を同梱のjarよりも上げておく

送信のためのコード Edit

DefaultHttpClient client = new DefaultHttpClient();
//送り先 先は先で適当にPHPで処理しておく
HttpPost post = new HttpPost("http://192.168.11.111/hoge.php");
MultipartEntity entity = new MultipartEntity();
post.setEntity(entity);
//↓送りたいファイルのセット
FileBody fileBody = new FileBody(new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/hoge.txt"));
entity.addPart("file", fileBody);

//送信
client.execute(post);

Edit

GAEとHttpClient4.0はCookie周りで相性が悪いと言う噂・・・

参考サイト Edit

コメント Edit


タグ Edit

Tag: Android

リロード   new Edit 凍結 差分 Upload 複製 名前変更   Home Page list Word Search Recent Update バックアップ Referer   Help   最終更新のRSS
Last-modified: 2010-03-25 (木) 22:54:51 (1733d)