Retrofit 2.0 上传文件

摘要:
1.以MultipartBody.Part的形式上载文件(单文件上载)(表单模式)@Multipart@POST(“xxx/xxx”)调用上传(@PartMultipartBody.Partpart);其中“photos”是服务器保留的文件参数名称。2.以RequestBody的形式上载文件(允许多次上载)/**上载多幅图像*/privatevoi

1.用MultipartBody.Part的方式上传文件(单文件上传)(表单方式)

 @Multipart
  @POST("xxx/xxx")
  Call<ResponseBody> upload(@Part MultipartBody.Part part);

Retrofit 2.0 上传文件第1张

其中的“photos”是与服务器端预定的文件参数名

2.用RequestBody的方式上传文件(表单方式,可多上传)

Retrofit 2.0 上传文件第2张

 /**
     * 多张图片上传
     */
    private void initUpateBitmap2() {

        //获取图片路径,这只是个简单的例子,项目开发中会有很多图片需要上传,一般从相册和相机里获取,并且保存到后台服务器时必须自己定义名字
        // ,这样就不会发生图片替换(原因名字重复)
        File file = new File(Environment.getExternalStorageDirectory() + "/" + "retrofit/" + "ceshi.jpg");
        File file2 = new File(Environment.getExternalStorageDirectory() + "/" + "retrofit/" + "ceshi2.jpg");
        File file3 = new File(Environment.getExternalStorageDirectory() + "/" + "retrofit/" + "ceshi3.jpg");
        File file4 = new File(Environment.getExternalStorageDirectory() + "/" + "retrofit/" + "ceshi4.jpg");

        RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
        RequestBody requestBody2 = RequestBody.create(MediaType.parse("multipart/form-data"), file2);
        RequestBody requestBody3 = RequestBody.create(MediaType.parse("multipart/form-data"), file3);
        RequestBody requestBody4 = RequestBody.create(MediaType.parse("multipart/form-data"), file4);
        RequestBody body = RequestBody.create(MediaType.parse("multipart/form-data"), file);
        //传一张图片就要增加一个参数
        String name = "photo"; filename="ceshi.jpg"";
        String name2 = "photo"; filename="ceshi2.jpg"";
        String name3 = "photo"; filename="ceshi3.jpg"";
        String name4 = "photo"; filename="ceshi4.jpg"";
        HashMap<String, RequestBody> map = new HashMap<>();
        map.put(name, requestBody);
        map.put(name2, requestBody2);
        map.put(name3, requestBody3);
        map.put(name4, requestBody4);

        RetrofitHelper.getInstance().uploadFile2(map, new RetrofitHelper.OnSuccessListener() {
            @Override
            public void onSuccess(Object o) {
                Log.e("", "成功");
            }

            @Override
            public void onFaile() {
                Log.e("", "失败");

            }
        });
    }

通用的带参数和文件上传

接口定义,注意这个时候没有@Multipart

 @POST("upload")
 Call<ResponseBody> uploadFile(@Body RequestBody body);
 RequestBody body=new MultipartBody.Builder().setType(MultipartBody.FORM)
                .addFormDataPart("userName","lange")
                .addFormDataPart("token","dxjdkdjkj9203kdckje0")
                .addFormDataPart("header",file.getName(),fileRQ)
                .build();
        Call<ResponseBody> uploadCall = downloadService.uploadFile(body);

或者 

 @Multipart
  @POST("postFied")
  Call<Void> postFied(@PartMap Map<String,String> map, @Part MultipartBody.Part file);



File file=new File("/sdcard/shumei.txt");
        RequestBody  body=RequestBody.create(MediaType.parse("application/octet-stream"),file);
//        RequestBody  body=RequestBody.create(MediaType.parse("multipart/form-data"),file);
        MultipartBody.Part part =MultipartBody.Part.createFormData("file",file.getName(),body);
        Map<String, String> map = new HashMap<>();
        map.put("name","123456");
        Call<Void> liing = api.postFied(map,part);

免责声明:文章转载自《Retrofit 2.0 上传文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iOS 计算两个日期之间的天数问题MySQL连接控制插件介绍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

struts2 s:file标签使用及文件上传例子

  <s:form action="uploadaction" method="post" enctype="multipart/form-data" >    <s:file label="上传" theme="simple" name="upload"/>    <s:submit value="上传"/> <...

Tomcat 修改上传文件默认权限

编辑tomcat根目录/bin/catalina.sh文件,找到 # Set UMASK unless it has been overridden if [ -z "$UMASK" ]; then UMASK="0027" fi umask $UMASK 将0027改成0022,重启...

jmeter上传文件同时带有参数

在jmeter中上传文件时同时带有参数。主要问题有两个: 第一是jmeter中「参数」模块的字段值是什么, 第二是jmeter中「文件上传」模块的字段值是什么,以及上传文件的MIME类型是什么。 》如下图,在浏览器中上传文件,network中查看上传接口,有请求地址、authorization(一般是登录接口返回的token,这里作为参数用来身份识别)、F...

RN 上传文件到以及上传文件到七牛云(初步)

本文将介绍: 如何使用原生 Javascript 上传文件 如何使用七牛云 SDK 上传文件到七牛云 在 App 中文件上传是一个非常重要的需求,但是翻遍 React Naitve 的官方文档没有发现有详细介绍文件上传的文章,在 github上 搜索一下倒是发现了不少 repo 在做这样的事情 遗憾的是这项项目都是基于 native code 实现的...

jQuery统计上传文件的大小

对于现代浏览器(支持html5)来说,在客户端统计上传文件的大小,可以通过$(selector)[0].files[0].size来实现。但在老版本的IE浏览器中,比如IE7,IE8或IE9,却不支持这种做法,但可以借助ActiveXObject对象来实现。 <input type="file" name="f" id="f" value="上传文件...

JavaWeb 之文件上传

1. 文件上传的要求 1.1 上传对表单的限制 method="post"; enctype="multipart/form-data"; 表单中需要添加文件表单项: <input type="file" name="xxx"/>. 1.2 上传对 Servlet 的限制 request.getParameter("xxx") 方法...