Retrofit 上传文件

2023-11-06

文件流的形式:

    @Multipart
    @POST("/upload")
    LiveData<ApiResponse<String>> voucherUpload(@Part MultipartBody.Part part);
public LiveData<ApiResponse<String>> getVoucherUpload(LiveData path) {
        LiveData voucherData = Transformations.switchMap(data, input -> {
            File file = new File(path);
            RequestBody fileRQ = RequestBody.create(MediaType.parse("image/*"), file);
            MultipartBody.Part part = MultipartBody.Part.createFormData("picture", file.getName(), fileRQ);
            return getApiService().voucherUpload(part);
        });
        return voucherData;
    }

方式二:

public static Call<Bean> upload(UploadApi api,byte[] img) {
    Map<String, Object> params = new HashMap<>();
    RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), img);
    return api.upload(params,requestBody);
}
 
 
@Multipart
@POST("upload")
Call<Bean> upload(@QueryMap Map<String, Object> maps, @Part("img\"; filename=\"img.jpg\"")RequestBody img);
 
 
MediaType.parse("multipart/form-data")    对应    @Multipart
 
@Part("img\"; filename=\"img.jpg\"")RequestBody img    
  
img是上传的时候,参数名

文件转为二进制:

/***
     * @param spec 图片路径
     * @return url请求结果
     */
    public static byte[] BufferStreamForByte(String spec) {
        byte[] content = null;
        try {
            BufferedInputStream bis = null;
            ByteArrayOutputStream out = null;
            try {
                FileInputStream input = new FileInputStream(spec);
                bis = new BufferedInputStream(input, 1024);
                byte[] bytes = new byte[1024];
                int len;
                out = new ByteArrayOutputStream();
                while ((len = bis.read(bytes)) > 0) {
                    out.write(bytes, 0, len);
                }
                bis.close();
                content = out.toByteArray();
            } finally {
                if (bis != null)
                    bis.close();
                if (out != null)
                    out.close();
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return content;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Retrofit 上传文件 的相关文章

  • Android SQLite 数据库从查询中删除重复项

    我是 SQLite 新手 我使用此查询是为了从特定用户的列中提取所有行 Cursor c db query true TABLE COLUMN USER user null null null null null 这是表格的示例 group
  • 改造中如何使用HashMap发布数据?

    您能解释一下如何使用以下方式发布数据吗hashmap in 改造2 这就是我发的帖子 FormUrlEncoded POST getProfile Call
  • 随着手指的滑动改变活动

    我想知道如何通过滑动手指来更改活动 或者从右向左滑动手指并更改活动 就像我们在智能手机上看到图片的方式一样 有人知道吗 Cumpz 请参阅以下链接 http savagelook com blog android swipes or fli
  • Android 上的多处理

    我一直在 Android 上执行一些测试 以验证并行化算法 如 FFT 的性能可以提高多少 我通过使用带有 JNI FFTW 的 pthread 和 Java 线程 来自 JTransforms 来实现这些算法 我没有像预期那样通过使用线程
  • 按钮点击和声音之间的延迟

    我不太明白为什么按钮点击和声音之间有延迟 以下是我的代码 button Button findViewById R id playBtn final MediaPlayer playButtonClick MediaPlayer creat
  • 如何在flutter android插件包中处理android生命周期

    我需要知道 android 插件包中 flutter 应用程序视图的当前状态 现在 我观察颤振视图中的状态https docs flutter io flutter widgets WidgetsBindingObserver class
  • 使用 ViewPager 从 Activity 到 Fragment 的通信

    我有一个 Activity 和两个 Fragmentstablayout含有一个viewpager 现在我可以通过实现谷歌的指南回调接口从片段到活动进行通信 但我怎样才能以另一种方式沟通从活动到片段 如果活动中发生了一些事情 外部事件 我想
  • 检测Android N版本代码

    是否可以检测用户是否运行 Android N 我有一台装有 Android N 开发者预览版的 Nexus 6 如果我尝试获取构建版本Build VERSION SDK INT 它返回 23 等于 Android Marshmallow Q
  • openFileOutput 在单例类中无法正常工作 - 想法/解决方法?

    作为一名 Android 开发新手 我遇到了一些奇怪的问题 我想创建一个类 它方法其他类 活动 任何可以用于以某种特殊方式处理文件的类 假设为了简单起见 我们将记录一些内容 如果我在活动中执行以下操作 例如在 OnClick 侦听器中 则一
  • MyGestureDetector 扩展了 SimpleOnGestureListener

    我正在实现一个扩展 SimpleOnGestureListener 的 MyGestureDetector 我从以下机构借了课程 http www codeshogun com blog tag view flipper http www
  • Ionic4 电容器 android livereload?

    是否有可能在带有 livereload 的 Android 设备上运行带有电容器的 ionic 4 应用程序 我已经找了几个小时的答案了 但没有成功 请帮忙 如果使用最新版本 ionic cli 现在有一个命令ionic capacitor
  • Android TextView 中的等宽表格数字

    我有一个自定义字体 默认情况下具有可变宽度数字字形 并且我想在 Android 中使用该字体的等宽表格数字功能TextView使数字垂直对齐 也就是说 改变如下 像这样的事情 要选择字体的表格数字功能 请使用TextView s fontF
  • Android 中的 BLE Gatt onConnectionStateChanged 失败,状态为 257

    我正在开发一个同时连接到多个BLE设备的Android应用程序 之后我从这些设备永久读取特征 但过了一会儿 我在onConnectionStateChanged 函数中得到状态257 android文档没有解释错误的原因是什么 或者如何修复
  • xhr 响应 for 循环不起作用

    我有 xhr 和 for 循环 它的工作非常罕见 for var i 0 i lt this files length i var xhr new XMLHttpRequest xhr upload onprogress function
  • React Native v0.71.8 React-native-vector-icons 你看不到的图标

    我在用react native版本v0 71 8 我安装了react native vector icons库 但图标未显示 似乎链接在最新版本的 React Native 中不再起作用 所以我按照说明进行操作 但它不再编译 出现以下错误
  • 如何在捆绑中存储稀疏数组

    我有一个SparseArray
  • 地理围栏不可用以及如何处理

    我正在 Android 上使用地理围栏 它在大多数手机上都工作正常 但在其中一些上 它不起作用 在我的错误日志中显示 地理围栏不可用 某些用户没有为 Google Play 服务启用位置跟踪 我认为这就是地理围栏在他们的手机上不起作用的原因
  • Desire HD 中的应用程序崩溃

    由于某些莫名其妙的原因 我的应用程序在 HTC Desire HD 上崩溃了 它在其他手机和模拟器中运行良好 这是崩溃报告 java lang RuntimeException Unable to start activity Compon
  • Android 模拟器提示和技巧 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何像UCBrowser一样使用webview打开url

    我是安卓新手 我正在尝试制作一个示例应用程序来在 webview 中打开网站 问题是 网站以桌面模式打开 如何才能像UC浏览器 手机模式 一样打开网站 尝试这个 它应该有效 webview1 getSettings setJavaScrip

随机推荐

  • 递归及递归的简单运用之4种方法解斐波那契数列

    什么是递归 若一个对象部分的包含自己或用它自己给自己定义 那么我们说这个对象是递归的 若一个过程直接或间接的调用自己 那么这个过程是递归的 递归的思想是把问题分解为规模更小具有与原问题相同解法的子问题 因此可以让我们思考的方式更加简单 程序
  • 《游戏编程》第一部 基础篇

    游戏编程 第一部 基础篇 目录 零 基础篇的目的 一 游戏的动画原理 二 基于动画原理的提高 三 游戏的基石 窗口 的建立 四 游戏制作利器 引擎 的选择文章内容 零 基础篇的目的 有了一个目标之后 往往人们比较有信心和动力 所以 我重新修
  • 深度学习Caffe实战笔记(1)环境搭建

    1 环境搭建 从知道深度学习开始 就一直想学习使用caffe 碍于各种事情一直没有如愿 这几天终于找了个时间搞了一下 打算把学习的过程整理成笔记 包括环境搭建 跑车牌识别数据 跑mnist数据 用Alexnet跑自己的数据 用Siamese
  • oracle分区

    用列做分区 分区原则是列的内容 create table custaddr id varchar2 15 byte not null areacode varchar2 4 byte partition by list areacode p
  • 【Google Drive 存储空间不够了怎么办】

    在进行深度学习的时候往往要将数据集存储在Google Drive上面 但是Google Drive的免费空间只有15G 怎么呢 因为别人有在Google Drive上的数据集 可以直接右键点击Short Cut 相当于在本地文件夹创建了一个
  • Idea整合Maven安装及配置教程(图文详解)

    目录 友情提醒 第一章 Maven概述 1 1 Maven是什么 1 2 Maven进行构建 build 的主要环节 第二章 Maven的下载安装和配置 2 1 Maven的下载 2 2 Maven环境变量配置 2 3 Maven文件set
  • mysql-redis事务的比较

    mysql redis事务的比较 最近刚好回去看redis的源代码 不得不说这个源代码写的真心不错 很有味道 刚好之前系统学了MySQL 于是就到了和redis进行对比作为本周博客主题 mysql acid 提到mysql的事务 trans
  • vba:inputbox

    inputbox函数与方法 1 区别一 外观区别 InputBox 函数 在一对话框来中显示提示 等待用户输入正文或按下按钮 并返回包含文本框内容的 String Application InputBox 方法 显示一个接收用户输入的对话框
  • 桌面路径改到D盘的目录下

    桌面路径改到D盘的目录下 首先在你的D盘先创建一个desk文件夹 然后在左边这里找到桌面 点击右击 属性 然后点击位置 把这个位置修改为刚才你在D盘所创建的文件夹的位置 这样就大功告成了 似不似so easy
  • MyBatis关系映射

    文章目录 前言 一 一对一映射 1 1 创建实体 1 2 xml配置 二 一对多映射 2 1 创建实体 2 2 resultMap配置 2 3 测试 三 多对多映射 3 1 创建实体 3 2 resultMap配置 3 3 测试 前言 My
  • 6-urdf

    URDF Unified Robot Description Format 统一机器人描述格式 基本概念 1 urdf 文件 定义机器人的结构 2 用于机器人的仿真 可视化 tf 3 ROS 的中包含一个urdf包 用来解析urdf文件 描
  • CSDN为什么会发展社区?看看官方怎么说

    文章目录 课前小差 23年可兼收名利 博客之星 红包活动 相聚线下 妙笔生花 原力计划 个人定位 为什么要发展社区 写在最后 课前小差 哈喽 大家好 我是几何心凉 这是一份全新的专栏 唯一得到CSDN王总的授权 来对于我们每周四的绿萝时间
  • 乐观锁实现接口幂等性_Elasticsearch系列---并发控制及乐观锁实现原理

    概要 本篇主要介绍一下Elasticsearch的并发控制和乐观锁的实现原理 列举常见的电商场景 关系型数据库的并发控制 ES的并发控制实践 并发场景 不论是关系型数据库的应用 还是使用Elasticsearch做搜索加速的场景 只要有数据
  • Qt中的项目类型(二)

    使用Qt进行软件开发 第一个要考虑的问题就是为需要开发的软件 选择一个合适的Qt项目类型 Qt中的项目类型有 Application 应用 项目 项目编译结果是可执行程序 Library 库 项目 项目编译结果是静态库或动态库 其他项目 辅
  • 登录功能使用Base64进行加密(解密) ---jsp页面以及servlet页面。(废了。不安全。。。。。)

    使用Base64在服务器端进行加密 String 加密后的字符串 Base64 getEncoder encodeToString 需要加密的字符串 getBytes byte 解密后的byte数组 Base64 getDecoder de
  • Markdown没能生成表格问题

    小白刚使用MD时不知道怎样弄出表格 刚开始使用Markdown 的时候 不知道怎样转换成表格 看了网上的 直接用下面的方法就可以了 但是为什么我的就是不出现表格呢 dog bird cat foo foo foo bar bar bar b
  • 微信小程序模板消息接口下线了,不用慌,调用统一服务消息接口来实现相同功能

    1 前言 做过微信开发的应该都有一点感触 就是他的开发文档不是一成不变的 接口有时候会被下线 但也不是一下子就不能用了 一般会兼容旧接口 然后提醒你使用新接口有更多好处 如果接口真的直接下线了 也会提供另一种能够实现相同功能的接口给你替换
  • Mysql千万级别数据批量插入只需简单三步

    http blog csdn net u011277123 article details 61914773 T自由职业者 2017 03 05 09 40 第一步 配置my ini文件 文件中配置 bulk insert buffer s
  • Java中有哪些保留关键字呢?

    转自 Java中有哪些保留关键字呢 下文笔者讲述java中保留关键字的简介说明 如下所示 private 一种访问控制方式 私用模式 protected 一种访问控制方式 保护模式 public 一种访问控制方式 共用模式 abstract
  • Retrofit 上传文件

    文件流的形式 Multipart POST upload LiveData