美文网首页
Retrofit上传文件的几种方式

Retrofit上传文件的几种方式

作者: 写代码的 | 来源:发表于2017-06-08 12:11 被阅读1439次

    第一种 @Part

        @POST("/upload.php")
        @Multipart
        public Observable<ResultInfo> upload(@Part MultipartBody.Part file);
    

    这种方式函数必须指定@MultiPart注解,函数参数类型为MultipartBody.Part类型,@Part注解不需要指定字段名称。

    第二种 @Part("file")

        @POST("/upload.php")
        @Multipart
        public Observable<ResultInfo> upload(@Part("file") RequestBody file);
    

    这种方式同样要求函数必须指定@Multipart注解,函数参数使用@Part("file")注解,通过@Part注解指定字段名称,但是函数参数类型不可以是MultipartBody.Part类型。通过PHP服务器接收的时候需要通过$_POST['file']来接收,而不是$_FILES['file']来接收,这是因为Retrofit在解析@Part注解时指定的头没有filename属性。

    第三种 @Body

        @POST("/upload.php")
        public Observable<ResultInfo> upload(@Body RequestBody file);
    

    这种方式函数不可以使用@Multipart注解和@FormUrlEncoded注解,并且@Body注解只能使用一次,函数的参数类型没有要求,只要可以通过Convert转换成RequestBody就行,不过上传文件一般用直接用RequestBody。如果使用MultipartBody类型作为参数,一定要设置type为MultipartBody.FORM。

    相关文章

      网友评论

          本文标题:Retrofit上传文件的几种方式

          本文链接:https://www.haomeiwen.com/subject/pfbzfxtx.html