使用 okHttp3 上传动态数量的文件

2024-02-26

如何管理动态数量的文件的上传OkHttp http://square.github.io/okhttp/v3,我已经用旧版本的 OkHttp 实现了compile 'com.squareup.okhttp:okhttp:2.6.0'

类 Form 发生了一些变化,现在对多部分主体进行建模。他们用更强大的 FormBody 和 FormBody.Builder 组合取代了不透明的 FormEncodingBuilder。同样,他们将 MultipartBuilder 升级为 MultipartBody、MultipartBody.Part 和 MultipartBody.Builder。

下面的代码是旧版本的

final MediaType MEDIA_TYPE = MediaType.parse(AppConstant.arrImages.get(i).getMediaType());

//If you can have multiple file types, set it in ArrayList

MultipartBuilder buildernew = new MultipartBuilder()
        .type(MultipartBuilder.FORM)
        .addFormDataPart("title", title);   //Here you can add the fix number of data.

for (int i = 0; i < AppConstants.arrImages.size(); i++) {  //loop to add dynamic number of files.
    File f = new File(FILE_PATH,TEMP_FILE_NAME + i + ".png");
    if (f.exists()) {
        buildernew.addFormDataPart(TEMP_FILE_NAME + i, TEMP_FILE_NAME + i + FILE_EXTENSION, RequestBody.create(MEDIA_TYPE, f));
    }
}

RequestBody requestBody = buildernew.build();  

//Build the object of MultipartBuilder and get object of RequestBody.

但现在对于OkHttp <version>3.0.1</version>文件上传的代码实现类似于下面的代码(source https://github.com/square/okhttp/wiki/Recipes)

RequestBody requestBody = new MultipartBody.Builder()
        .setType(MultipartBody.FORM)
        .addFormDataPart("title", "Square Logo")
        .addFormDataPart("image", "logo-square.png",
            RequestBody.create(MEDIA_TYPE_PNG, new File("website/static/logo-square.png")))
        .build();

我尝试了相同的逻辑MultipartBody但没有找到任何有效的解决方案。 或者我需要实施相同的if else针对不同情况。(这是不可行的)


该构建器仍然存在并且可以用于此目的。像之前一样将其存储在本地并在循环中进行修改:

MultipartBody.Builder buildernew = new MultipartBody.Builder()
      .setType(MultipartBody.FORM)
      .addFormDataPart("title", title);   //Here you can add the fix number of data.

for (int i = 0; i < AppConstants.arrImages.size(); i++) {
    File f = new File(FILE_PATH,TEMP_FILE_NAME + i + ".png");
    if (f.exists()) {
        buildernew.addFormDataPart(TEMP_FILE_NAME + i, TEMP_FILE_NAME + i + FILE_EXTENSION, RequestBody.create(MEDIA_TYPE, f));
    }
}

MultipartBody requestBody = buildernew.build();  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 okHttp3 上传动态数量的文件 的相关文章

随机推荐

  • System.IO.IOException CreateHostBuilder(args).Build().Run() 中的“功能未实现”

    当我开始在 Linux Docker 容器中调试我的应用程序时 在调用时出现异常CreateHostBuilder args Build 该代码是一个相当新的 AspASP NET Core MVC 3 1 项目的一部分 I saw the
  • Nexus 存储库 3 备份

    最近我安装了Nexus 存储库 3在 OpenStack Cloud 中 我已经使用它一段时间了 我想对 Nexus 执行增量备份 从而保护我们的数据 如何对 Nexus 数据进行增量备份 Nexus 备份的过程描述于文档 https he
  • 使用负年份创建 Instant

    我正在尝试创建一个Instant基于公元前公历中的年份 这是我到目前为止所拥有的 Instant FromDateTimeOffset new DateTimeOffset 1000 10 01 0 0 0 0 new System Glo
  • SwiftUI 中带有背景图像的透明导航栏

    我有一个自定义导航栏 它是一个图像 后跟标题文本 图像设置为缩放以填充 但没有完全填满导航栏 因此 您可以看到图像未覆盖的一小部分条形 我尝试将导航栏的背景颜色设置为清除 但这不起作用 有什么建议么 struct ContentView V
  • 如何通过 GPS 检查距 x,y 位置 10 米的半径

    我从 GPS 得到这个位置 40 715192 74 005795 如何判断i是否在10米半径范围内 提前致谢 使用半正矢公式http en wikipedia org wiki Haversine formula http en wiki
  • 将 yuv 序列转换为 bmp 图像

    我有 yuv 序列 我想将它们转换为 bmp 图像 我想将其保存到我的计算机上的文件夹中 我使用了 yuv2bmp m 文件这个链接 http www mathworks com matlabcentral fileexchange 255
  • 数据库 - 为什么不区分大小写?

    我看到一两个线程在全球范围内讨论区分大小写 但我的问题更具体 例如 我理解对文本值不区分大小写的搜索的兴趣 但为什么我们要使用不区分大小写的数据库名称 表和列呢 难道不会导致错误吗 使用数据库的脚本语言都是区分大小写的 因此 例如 如果我们
  • MS Graph Java SDK:如何将大文件上传到 OneDrive?

    我正在尝试从 Java 应用程序将文件上传到 OneDrive 但我不了解流程 也没有在 SKD 中看到任何用于文件上传的文档或方法 我发现的唯一流程是 driveClient me drive root createUploadSessi
  • 如何获取 DShellFolderViewEvents 的方法签名

    我试图沉沦DShellFolderViewEvents使用 ATL 我能够成功订阅的唯一方法是DISPID SELECTIONCHANGED 标题中似乎列出了许多其他事件shdispid h 但我无法让他们开火 不确定我做错了什么 可能与
  • Blogger Javascript 在帖子 > 500 上出现 JSON 错误

    我想向我的博主展示随机帖子 我从谷歌搜索得到了一个 javascript 并尝试了它 但是随机帖子的数量不正确 应该是 10 但有时是 4 有时是 2 等等 我尝试检查发生了什么 发现 json feed entry 500 抛出错误 这是
  • 为什么Restlet无法注册JSON转换器?

    我在这里束手无策 似乎从来没有遇到过这个问题 我发现设置快速 HelloWorld 应用程序以确保 Restlet 2 0 启动并运行相对容易 然而 我面临着一个我以前从未遇到过的奇怪异常 我的类路径和 WEB INF lib 文件夹中都有
  • g++:错误:libgomp.spec:没有这样的文件或目录

    我使用 g GCC 4 7 2 在 Windows 7 64 位版本上 下载自http nuwen net mingw html http nuwen net mingw html 我尝试使用 fopenmp 标志并收到错误 g 错误 li
  • Swagger/Swashbuckle 列出可接受的值?

    我已在 Web API 应用程序上成功实现了 Swashbuckle Swagger 但对输出并不满意 我的 Web api 方法之一 企业事件日志记录工具 接受复杂对象值的 JSON 对象 问题在于 当存在可以使用的可接受值的选定列表时
  • 在 Windows 上监听“使用我的 Java 应用程序打开文件”事件

    标题很混乱 但不知道如何用几句话来解释 我有一个读取 example 文件的 java 应用程序 我还添加了一个文件关联 感谢install4j因此 当用户双击任何扩展名为 example 的文件时 我的应用程序就会启动 看来 instal
  • 在 Python 脚本中以 Windows 上的不同用户(非管理员)身份运行程序

    使用以下代码 class ImpersonateWin32Sec object def init self domain username password self username username self password pass
  • 在 Vaadin 7 Web 应用程序中获取用户的 IP 地址和其他客户端信息

    In Vaadin https www Vaadin com 7 如何获得IP地址 http en wikipedia org wiki IP address用户的计算机 设备 我可以获得有关客户的其他信息吗 Vaadin WebBrows
  • Laravel - AppServiceProvider 未被调用

    我尝试在 Laravel AppServiceProvider 中绑定一些服务 但服务没有绑定 我认为 AppServiceProvider 甚至没有被调用 事实上 我做了一个新的并且有效 所以我的问题是 我做错了什么吗 或者 AppSer
  • 不带 FROM 子句的 SELECT

    我正在为我的 MS Access 数据库编写一条 SQL 语句 目的是对 3 个不同查询的值进行计数 所以我尝试了以下方法 SELECT query1 query2 query3 AS Qtd 每个查询从聚合函数计数中返回一个唯一值 即qu
  • 将小提琴图与箱线图相结合

    我有一个非常简单的数据集 2 组 每组 n 15 使用 ggplot2 我可以轻松绘制两组的小提琴图或箱线图 但是 我想绘制小提琴图 但填充阴影对应于我的数据的 3 个四分位数 有一个用SAS做的例子here http blogs sas
  • 使用 okHttp3 上传动态数量的文件

    如何管理动态数量的文件的上传OkHttp http square github io okhttp v3 我已经用旧版本的 OkHttp 实现了compile com squareup okhttp okhttp 2 6 0 类 Form