Retrofit2 上傳圖片(服務器端+Android端)

implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.5.0'

自己只用了這兩個

先寫一個接口,BaseUrl+Post =完整的Url.

@Part裏面寫了服務器端的(@RequestParam(value="upload_file") MultipartFile file ,value裏面的值

 

服務器端

/**
     * @return
     */
    @RequestMapping(value = "uploadlicense.do")
    @ResponseBody
    public ServerResponse uploadlicense(@RequestParam(value="upload_file") MultipartFile file, HttpServletRequest request) {
        String path = request.getSession().getServletContext().getRealPath("upload");
        String targetFileName = iFileService.upload(file, path);
        String url = PropertiesUtil.getProperty("ftp.server.http.prefix") + targetFileName;

        Map fileMap = Maps.newHashMap();
        fileMap.put("uri", targetFileName);
        fileMap.put("url", url);

        int storeid = adminoneMapper.getstoreidbyusername("yuyu");
        storeMapper.updatelicesepicture(storeid,url);
        return ServerResponse.createBySuccess(fileMap);
    }

Android端


import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;

public interface RetrofitService {

    @Multipart
    @POST("yuyu/storeByAdmin/uploadlicense.do")
    Call<ResponseBody> uploadEvaluation(@Part("upload_file\";filename=\"1.jpg") RequestBody file);

}
private void upload() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://ip地址:8080/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        RetrofitService service = retrofit.create(RetrofitService.class);
        File file = new File(Environment.getExternalStorageDirectory(), Const.licensepicture);
        RequestBody requestFile =
                RequestBody.create(MediaType.parse("image/jpg"), file);
        Call<ResponseBody> uploadPicture = service.uploadFileWithRequestBody(requestFile);
        uploadPicture.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                Log.e(TAG, "onResponseonResponseonResponse: "+response.body().toString() );
                //Toast.makeText(uploadLicensePicture.this, (CharSequence) response.body(), Toast.LENGTH_SHORT).show();

            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                Log.e(TAG, "onFailureonFailureonFailureonFailureonFailureonFailure: " );
            }
        });
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章