广告
返回顶部
首页 > 资讯 > 移动开发 >Android使用Retrofit上传文件功能
  • 906
分享到

Android使用Retrofit上传文件功能

2024-04-02 19:04:59 906人浏览 八月长安
摘要

本文实例为大家分享了Android使用Retrofit上传文件的具体代码,供大家参考,具体内容如下 一、封装RetrofitManager public class Retrofit

本文实例为大家分享了Android使用Retrofit上传文件的具体代码,供大家参考,具体内容如下

一、封装RetrofitManager

public class RetrofitManager {
    private static RetrofitManager retrofitManager;
    
    private Retrofit retrofit;

    private RetrofitManager() {}

    public static RetrofitManager getInstance() {
        if (retrofitManager == null) {
            synchronized (RetrofitManager.class) {
                if (retrofitManager == null) {
                    retrofitManager = new RetrofitManager();
                }
            }
        }
        return retrofitManager;
    }

    public Retrofit getRetrofit() {
        if (retrofit == null) {
            // 添加日志拦截器
            HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
            // 拦截等级为body(可以打印出完整的网络请求)
            httpLoggingInterceptor.level(HttpLoggingInterceptor.Level.BODY);
            // 使用OkHttpClient
            OkHttpClient okHttpClient = new OkHttpClient.Builder()
                    .addInterceptor(httpLoggingInterceptor)
                    .connectTimeout(1, TimeUnit.MINUTES)
                    .readTimeout(1,TimeUnit.MINUTES)
                    .build();

            // 创建出Retrofit
            retrofit = new Retrofit.Builder()
                     // 使用Gson转换工厂
                    .addConverterFactory(GsonConverterFactory.create())
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    // 基础Url
                    .baseUrl("http:/")
                    .client(okHttpClient)
                    .build();
        }
        return retrofit;
    }
}

二、上传单一文件

1.在Api接口中声明方法

@Multipart
@POST("fileUpload")
Observable<String> upload(@Part List<MultipartBody.Part> parts);

2.实例化api接口

// 实例化api接口
Api api = RetrofitManager.getInstance().getRetrofit().create(Api.class);

3.构建参数

File file = new File("/sdcard/DCIM/Camera/**.jpg");
RequestBody body = RequestBody.create(MediaType.parse("multipart/fORM-data"), file);

MultipartBody multipartBody = new MultipartBody.Builder()
                .addFormDataPart("file", "fileName.jpg", body)
                .setType(MultipartBody.FORM)
                .build();

4.提交请求

api.upload(parts)
   .observeOn(AndroidSchedulers.mainThread())
   .subscribeOn(Schedulers.io())
   .subscribe(new Observer<String>() {
       @Override
       public void onNext(String s) {
           Log.i("--",s); // 请求结果
       }
       @Override
       public void onError(Throwable e) {

       }
       @Override
       public void onComplete() {

       }
   });

三、上传多个文件

1.在Api接口中声明方法

@Multipart
@POST("fileUploadMore")
Observable<String> uploadMore(@PartMap Map<String, List<MultipartBody.Part>> multiMap);

2.实例化api接口

// 实例化api接口
Api api = RetrofitManager.getInstance().getRetrofit().create(Api.class);

3.构建参数

File file = new File("/sdcard/DCIM/Camera/**.jpg");
RequestBody body = RequestBody.create(MediaType.parse("multipart/form-data"), file);

MultipartBody multipartBody1 = new MultipartBody.Builder()
                .addFormDataPart("file", "fileName1.jpg", body)
                .setType(MultipartBody.FORM)
                .build();
MultipartBody multipartBody2 = new MultipartBody.Builder()
                .addFormDataPart("file", "fileName2.jpg", body)
                .setType(MultipartBody.FORM)
                .build();
MultipartBody multipartBody3 = new MultipartBody.Builder()
                .addFormDataPart("file", "fileName3.jpg", body)
                .setType(MultipartBody.FORM)
                .build();
MultipartBody multipartBody4 = new MultipartBody.Builder()
                .addFormDataPart("file", "fileName4.jpg", body)
                .setType(MultipartBody.FORM)
                .build();

// 把所有文件放入map集合中
Map<String, List<MultipartBody.Part>> parts = new HashMap<>();
parts.put("f1",multipartBody1.parts());
parts.put("f2",multipartBody2.parts());
parts.put("f3",multipartBody3.parts());
parts.put("f4",multipartBody4.parts());

4.提交请求

api.uploadMore(parts)
   .observeOn(AndroidSchedulers.mainThread())
   .subscribeOn(Schedulers.io())
   .subscribe(new Observer<String>() {
       @Override
       public void onNext(String s) {
           Log.i("--",s); // 请求结果
       }
       @Override
       public void onError(Throwable e) {

       }
       @Override
       public void onComplete() {

       }
   });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Android使用Retrofit上传文件功能

本文链接: https://www.lsjlt.com/news/162724.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android使用Retrofit上传文件功能
    本文实例为大家分享了Android使用Retrofit上传文件的具体代码,供大家参考,具体内容如下 一、封装RetrofitManager public class Retrofit...
    99+
    2022-11-12
  • Android如何使用Retrofit上传文件功能
    本文将为大家详细介绍“Android如何使用Retrofit上传文件功能”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“Android如何使用Retrofit上传文件功能”能够给你意想不到的收获,请大家跟着小编...
    99+
    2023-06-26
  • Android Retrofit实现多图片/文件、图文上传功能
    什么是 Retrofit ? Retrofit是Square开发的一个Android和Java的REST客户端库。这个库非常简单并且具有很多特性,相比其他的网络库,更...
    99+
    2022-06-06
    图片 retrofit Android
  • Retrofit+Rxjava如何实现文件上传和下载功能
    这篇文章主要介绍Retrofit+Rxjava如何实现文件上传和下载功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Retrofit简介:在Android API4.4之后,Google官方使用了square公司推...
    99+
    2023-05-30
    retrofit rxjava
  • 怎么在Android中利用Retrofit 2.X 上传文件
    怎么在Android中利用Retrofit 2.X 上传文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Body方式:1、Retrofit接口RetrofitInterf...
    99+
    2023-05-30
    retrofit android
  • Android实现上传文件功能的方法
    本文所述为一个Android上传文件的源代码,每一步实现过程都备有详尽的注释,思路比较清楚,学习了本例所述上传文件代码之后,你可以应对其它格式文件的上传。实例中主要实现上传文件...
    99+
    2022-06-06
    方法 上传文件 Android
  • Android基于OkHttp实现文件上传功能
    本文实例为大家分享了Android基于OkHttp实现文件上传的具体代码,供大家参考,具体内容如下 一、相关概述 Android请求访问服务端大多数情况下依旧是使用http协议,故而...
    99+
    2022-11-13
  • Android中使用Socket怎么实现文件断点上传功能
    今天就跟大家聊聊有关Android中使用Socket怎么实现文件断点上传功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是Socket所谓Socket通常也称作“套接字”,用于...
    99+
    2023-05-31
    android socket roi
  • 使用fileupload组件实现文件上传功能
    使用fileupload组件实现文件上传功能可以按照以下步骤进行:1. 导入相关文件和库:首先,需要导入jQuery库和fileup...
    99+
    2023-08-14
    fileupload
  • asp.net6 blazor 文件上传功能
    微软在asp.net6中给blazor新增了一个IJSStreamReference的接口。 我们今天的所有内容,都要依赖这个接口,因为它可以把流直接传到c#中,这样我们就可以做很多...
    99+
    2022-11-13
  • java使用Socket实现文件上传功能
    本文实例为大家分享了使用Socket实现文件上传功能的具体代码,供大家参考,具体内容如下 文件上传的步骤: 服务器端步骤: 1、创建ServerSocket 2、调用accept获...
    99+
    2022-11-13
  • vue使用el-upload实现文件上传功能
    因为我是vue+springboot前后分离,要跨域,就不能用默认的action写请求地址,我用axios时最困扰的就是怎么拿到那个真实的文件,然后给传给后台。 其实可以通过自带的o...
    99+
    2022-11-13
  • 怎么使用html实现文件上传功能
    本篇内容介绍了“怎么使用html实现文件上传功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!HTML5中的文件上传在HTML5中,文件上传...
    99+
    2023-07-06
  • 怎么使用ajaxfileupload.js实现上传文件功能
    要使用ajaxfileupload.js实现上传文件功能,需要按照以下步骤进行操作:1. 引入ajaxfileupload.js文件...
    99+
    2023-08-11
    ajaxfileupload.js
  • springmvc实现文件上传功能
    一个简单的springmvc文件上传例子 所需的依赖 只需要这个就好了。在idea的依赖关系图中,commons-fileupload包含了commons-io依赖 <d...
    99+
    2022-11-11
  • ASP.NET实现文件上传功能
    本文实例为大家分享了ASP.NET实现文件上传功能的具体代码,供大家参考,具体内容如下 1、搭建网站结构 2、编写网页文件 创建一个Web窗体UploadFile和UpFile文件...
    99+
    2022-11-13
  • SpringBoot实现文件上传功能
    经典的文件上传 服务器处理上传文件一般都是先在请求中读取文件信息,然后改变名称保存在服务器的临时路径下,最后保存到服务器磁盘中。本次以thymeleaf搭建demo,因此需要引入th...
    99+
    2022-11-12
  • JSP实现文件上传功能
    本文实例为大家分享了JSP实现文件上传功能的具体代码,供大家参考,具体内容如下 一、准备部分 需要fileupload.jar与io.jar包共同完成。构建完成路径后可继续。 资源地...
    99+
    2022-11-12
  • javaweb实现文件上传功能
    本文实例为大家分享了javaweb实现文件上传的具体代码,供大家参考,具体内容如下 1、创建一个空项目 2、新建一个web application 的Module 3、创建一个lib...
    99+
    2022-11-13
  • JavaWeb实现上传文件功能
    本文实例为大家分享了JavaWeb实现上传文件的具体代码,供大家参考,具体内容如下 这是需要使用到的两个jar包一定要导入到lib目录中,并添加到发布的lib目录下 index.j...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作