Android上传图片到服务器

拍照或者从相册选取图片需要申请权限,这一步做完了以后,经过一系列操作之后在onActivityResult方法中会有回调,通过switch返回的requestCode区分是拍照还是从相册选取,本地需要指定一个File,用于存放选中的图片。
这里假设图片已经拿到了。

    @Multipart
    @POST("******************************")

上传图片需要使用post请求,同时还需要使用Multipart

方法名(@PartMap Map<String,RequestBody> map,
             @Part List<MultipartBody.Part> images);

参数一是你需要传的参数
在代码中:

private RequestBody getRequestBody(String value){
     return RequestBody.create(MediaType.parse(Config.UPLOAD.UPLOAD_FILE_FORMAT), value);
}

这个是用于生成需要的RequestBody ,value是需要对应的值
其中UPLOAD_FILE_FORMAT的值是:

public static final String UPLOAD_FILE_FORMAT = "multipart/form-data";

生成好RequestBody 后,在代码中new一个map:

Map<String,RequestBody> map = new LinkedHashMap<>();
 map.put("username",getRequestBody(userName));
 ******

这样就构建好了传给服务器的第一个参数了。
如果参数少的话,也可以不用partMap

@Part("username") RequestBody userName

接下来看一下第二个参数,这是多图,是一个文件的集合:

@Part List<MultipartBody.Part> images

如果是一张图片,可以写成这样:

@Part MultipartBody.Part file

直接看一下传多图吧:
下面的代码是构建单个的MultipartBody.Part

private MultipartBody.Part getFilePart(String partName,File file,String fileName){
        RequestBody requestBody = RequestBody.create(MediaType.parse(Config.UPLOAD.UPLOAD_FILE_FORMAT), file);
        return MultipartBody.Part.createFormData(partName, fileName, requestBody);
    }

这里的partName由你自己定义。多图就是使用一个list就好了。

这样就可以愉快地上传了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值