13.2-Okhttp Retrofit 文件上传

1.接口

上传图片
https://www.liulongbin.top:xxxx/api/private/v1/upload
post
请求头 authorization
参数: file – 文件

2.Okhttp 文件上传

 
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
 //1.获取文件的路径
   String path = Environment.getExternalStorageDirectory()+ File.separator+"7-1.png";
   //path  --> File
   File file = new File(path);
   if (!file.exists()){
       Log.d(TAG, "uploadOkhttp: 文件不在啊");
       return;
   }

   //file--->requestBody
   RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), file);

   //混合体对象 requestBody -- > multipartBody
   MultipartBody build1 = new MultipartBody.Builder()
           //表单类型
           .setType(MultipartBody.FORM)
           .addFormDataPart("file",file.getName(),requestBody)
           .build();

   OkHttpClient okHttpClient = new OkHttpClient();

   Request build = new Request.Builder()
           .url(uploadUrl)
           .header("authorization",head)
           .post(build1)
           .build();
   okHttpClient.newCall(build).enqueue(new Callback() {
       @Override
       public void onFailure(Call call, IOException e) {

           Log.d(TAG, "onFailure: "+e.getMessage());
       }

       @Override
       public void onResponse(Call call, Response response) throws IOException {

           Log.d(TAG, "onResponse: "+response.body().string());

       }
   });
 

Retrofit 文件上传

网络请求的接口:

String baseUrl ="   https://www.liulongbin.top:xxx/";
  /**
   *     上传图片
   post
   请求头  authorization
   参数: file -- 文件
   * @return
   */
  @Multipart
  @POST("api/private/v1/upload")
  Call<ResponseBody>  uploadFile(@Header("authorization") String auth, @Part MultipartBody.Part  filePart);
   //path
   String path = Environment.getExternalStorageDirectory()+"/7-1.png";
   //path--->File
   File file = new File(path);

   //file--->requestBody
   RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), file);

   //requestbody ---> multipartBody.Part
   MultipartBody.Part multipartBodyPart = MultipartBody.Part.createFormData("file", file.getName(), requestBody);


   new Retrofit.Builder()
           .baseUrl(ApiService.baseUrl)
           .build()
           .create(ApiService.class)
           .uploadFile(head,multipartBodyPart)
           .enqueue(new retrofit2.Callback<ResponseBody>() {
               @Override
               public void onResponse(retrofit2.Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
                   try {
                       Log.d(TAG, "onResponse: "+response.body().string());
                   } catch (IOException e) {
                       e.printStackTrace();
                   }
               }

               @Override
               public void onFailure(retrofit2.Call<ResponseBody> call, Throwable t) {

                   Log.d(TAG, "onFailure: "+t.getMessage());
               }
           });

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值