【androidJava】MultipartBodyの使い方

asaba 著者:asaba

【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)

著者について

asaba

asaba author

helloWorld!!!!