Retrofit2.0上传空文件

昨天在项目上遇到一个需求,固定两个文件参数的上传,但是有的时候可能有个文件参数是空的,以前没遇到过这种需求,问度娘也无果。最后自己慢慢尝试出来的,心累呀。

具体代码实现

可能写出来的代码有点儿low,以后改善就好了。存在空文件的情况是mediaList.size()为1的时候。

public static MultipartBody.Part createFormData(String name, String value) {

            return createFormData(name, (String)null, RequestBody.create((MediaType)null, value));

        }

        public static MultipartBody.Part createFormData(String name, String filename, RequestBody body) {

            if(name == null) {

                throw new NullPointerException("name == null");

            } else {

                StringBuilder disposition = new StringBuilder("form-data; name=");

                MultipartBody.appendQuotedString(disposition, name);

                if(filename != null) {

                    disposition.append("; filename=");

                    MultipartBody.appendQuotedString(disposition, filename);

                }

                return create(Headers.of(new String[]{"Content-Disposition", disposition.toString()}), body);

            }

        }

以上是构造MultipartBody.Part的两种方法,我们会发现有个方法可以不用传RequestBody对象,这不正是我们想要的吗,bingo。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,256评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,839评论 18 399
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,186评论 0 7
  • apache下的httpclient工具可大大简化开发过程中的点对点通信,本人将以微信多媒体接口为例,展示http...
    划破的天空阅读 5,431评论 0 32
  • 饮茶,开启另一种人生 作为80、90后的你 你是否也有这样的感受 在钢筋混凝土铸成的城市牢笼里生活久了 内心常常感...
    说茶酱阅读 278评论 0 0