浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【androidJava】MultipartBodyの使い方

今回は、ギャラリーから画像を取得してOKHttpでファイル名をアップロードすることを目的としたコードです。

 

非同期通信で画像をpost形式で送るには、MultipartBodyオブジェクトを用意します。

画像のurlを取得したりアップロードするときに主に用いられますが、通常使っている

FormBody.Builder()と形式はあまり変わりません。成功時に引数responseの中に画像の名前が格納されます。

試しに20行目のSystem.out.printlnを見れば画像の名前が取得できていると思います。

 

OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("active", "fileUpload")
.addFormDataPart("app0", resultUri.getPath(),
                RequestBody.create(MediaType.parse("image/jpeg"), String.valueOf(resultUri)))
        .build();
Request request = new Request.Builder()
        .url("http://fuga/hoge.php")
        .post(requestBody)
        .build();
client.newCall(request).enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        e.printStackTrace();
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        System.out.println(response.body().string());
    }
});

一番最初のaddFormDataPartは、画像が送られてきた時にそのurlを返すapiと仮定して書いたので、試す場合はphpなどで

代用するものを作ってください。

どうやって通信前の画像の名前を取得しているかはまた後日に書いていきたいと思います。
  • この記事いいね! (0)