HttpClient上传文件传入MultipartFile类型

2023-12-13 12:38

本文主要是介绍HttpClient上传文件传入MultipartFile类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

httpClient post方式上传MultipartFile文件

注意:builder.addBinaryBody("file", file.getInputStream(), ContentType.MULTIPART_FORM_DATA, fileName);// 文件流

第一个参数:"file" 表现需要调用的上传文件接口 文件名

返回 ”Required request part 'file' is not present” 错误时,就是因为该名称 和调用的 url中文件名称不一样

第二个参数:传入文件流

第三个参数:文件类型

第四个参数:上传文件的名称

/*** post请求接口* @param url* @param imageUploadFileName* @param file* @param headerParams* @param otherParams* @return*/public static String postResultMultipartFile(String url,String imageUploadFileName,MultipartFile file,Map<String,String> headerParams, Map<String,String> otherParams) {CloseableHttpClient httpClient = HttpClients.createDefault();String result = "";HttpEntity httpEntity = null;HttpEntity responseEntity = null;try {String fileName = file.getOriginalFilename();HttpPost httpPost = new HttpPost(url);//添加header
//            for (Map.Entry<String, String> e : headerParams.entrySet()) {
//                httpPost.addHeader(e.getKey(), e.getValue());
//            }MultipartEntityBuilder builder = MultipartEntityBuilder.create();builder.setCharset(Charset.forName("utf-8"));builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);//加上此行代码解决返回中文乱码问题builder.addBinaryBody("file", file.getInputStream(), ContentType.MULTIPART_FORM_DATA, fileName);// 文件流
//            for (Map.Entry<String, String> e : otherParams.entrySet()) {
//                builder.addTextBody(e.getKey(), e.getValue());// 类似浏览器表单提交,对应input的name和value
//            }httpEntity = builder.build();httpPost.setEntity(httpEntity);HttpResponse response = httpClient.execute(httpPost);// 执行提交responseEntity = response.getEntity();if (responseEntity != null) {// 将响应内容转换为字符串result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));}} catch (IOException e) {log.info("------------------{}",e.getMessage());e.printStackTrace();}catch (Exception e) {log.info("------------------{}",e.getMessage());e.printStackTrace();}  finally {printLog(url, HttpMethod.POST, httpEntity, null, responseEntity);}return result;}

控制器端代码

@ApiOperation(value = "通过http调用***文件接口 上传图片到***IDC服务器")@PostMapping(value = "/upload")public BizBaseResponse<String> upload(@RequestParam("file") MultipartFile file, String dir) {String upload = null;try {upload = openApiShopFileService.upload(file,dir, true);} catch (BizException e) {log.error("通过http调用***文件接口 上传图片到***IDC服务器 异常(/openapi/shop/addShopInfoToThShop)", e);return addError(BizErrorCodeEnum.OPERATION_FAILED, e.getErrorMessage());} catch (Exception e) {log.error("通过http调用***文件接口 上传图片到***IDC服务器 异常(/openapi/shop/addShopInfoToThShop)", e);return addError(BizErrorCodeEnum.OPERATION_FAILED, "上传文件失败");}return new BizBaseResponse(upload);}

 

postman调用测试:

这篇关于HttpClient上传文件传入MultipartFile类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/488507

相关文章

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Python如何查看数据的类型

《Python如何查看数据的类型》:本文主要介绍Python如何查看数据的类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python查看数据的类型1. 使用 type()2. 使用 isinstance()3. 检查对象的 __class__ 属性4.

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D

使用mvn deploy命令上传jar包的实现

《使用mvndeploy命令上传jar包的实现》本文介绍了使用mvndeploy:deploy-file命令将本地仓库中的JAR包重新发布到Maven私服,文中通过示例代码介绍的非常详细,对大家的学... 目录一、背景二、环境三、配置nexus上传账号四、执行deploy命令上传包1. 首先需要把本地仓中要