java map转Multipart/form-data类型body实例
作者:qq_33770498 发布时间:2023-04-19 13:16:18
标签:java,map,Multipart,form-data
我就废话不多说了,大家还是直接看代码吧!
public static String mapToTxt(Map<String,String> fieldMap, Map<String,File> fileMap,String fileName) throws Exception{
Random random = new Random();
int j;
String getLine = "\r\n";
String fileType = "Content-Type: application/octet-stream";
String doubleBar = "--";
biaoshi = "----WebKitFormBoundary";
StringBuffer sb = new StringBuffer();
for(int i = 0; i < 16;i++){
j = random.nextInt(MULTIPART_CHARS.length-2)+2;
sb.append(MULTIPART_CHARS[j]);
}
biaoshi = biaoshi + sb.toString();
StringBuffer stringBuffer = new StringBuffer();
for (Map.Entry<String,String> entity:fieldMap.entrySet()) {
String name = "Content-Disposition: form-data; name=\""+entity.getKey()+"\"";
stringBuffer.append(doubleBar+biaoshi);
stringBuffer.append(getLine);
stringBuffer.append(name);
stringBuffer.append(getLine);
stringBuffer.append(getLine);
stringBuffer.append(entity.getValue());
stringBuffer.append(getLine);
}
for (Map.Entry<String,File> entity:fileMap.entrySet()) {
String name = "Content-Disposition: form-data; name=\""+fileName+"\"; filename=\""+entity.getValue().getName()+"\"";
stringBuffer.append(doubleBar+biaoshi);
stringBuffer.append(getLine);
stringBuffer.append(name);
stringBuffer.append(getLine);
stringBuffer.append(fileType);
stringBuffer.append(getLine);
stringBuffer.append(getLine);
File f = entity.getValue();
FileInputStream fileInputStream = new FileInputStream(f);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte by[] = new byte[1024];
int k = 0;
while ((k=fileInputStream.read(by))!=-1){
byteArrayOutputStream.write(by,0,k);
}
by = byteArrayOutputStream.toByteArray();
for(int i = 0; i < by.length; i++){
stringBuffer.append(by[i]);
}
stringBuffer.append(getLine);
}
stringBuffer.append(doubleBar+biaoshi+doubleBar);
return stringBuffer.toString();
}
补充知识:java 如何取出传参数格式为form-data中的值
public Map<String, Object> Test(HttpServletRequest request,HttpServletRequest response) throws Exception {
Map<String, String> returnMap = new HashMap<String, String>();
String a=request.getParameter("a");//取出form-data中a的值
String b=request.getParameter("b");//取出form-data中a的值
//取出form-data中的二进制字段
MultipartHttpServletRequest multipartRequest=(MultipartHttpServletRequest) request;
MultipartFile multipartFile = multipartRequest.getFile("file");//file是form-data中二进制字段对应的name
System.out.println(multipartFile.getSize());
Map<String, Object> resultMapsReturn = new HashMap<>();
String imagePath="C:\\Users\\win\\Desktop\\1.jpg"//把取出来的二进制保存图片到本地
if(multipartFile.getSize()<=0){
resultMapsReturn.put("resultcode", "0");
resultMapsReturn.put("msg", DisWebConst.ERROR_TITLE);
}else{
InputStream is = multipartFile.getInputStream();
OutputStream out = new FileOutputStream(imagePath);
IOUtils.copy(is, out);
is.close();
out.close();
}
来源:https://blog.csdn.net/qq_33770498/article/details/80525182


猜你喜欢
- @RequestBody配合@Valid校验入参参数自定义一个Controllerimport com.example.demo.pojo.
- 本文实例讲述了C#转换日期类型的方法。分享给大家供大家参考。具体分析如下:如:将日期1999-5-31 11:20转换成 /Date(928
- 最近在开发浏览器碰到这么一个需求:点击地址栏的时候,需要全选并调出键盘,再次点击就取消全选显示光标。点击屏幕除地址栏其他位置时,键盘隐藏,隐
- java 制作验证码并进行验证实例详解在注册、登录的页面上经常会出现验证码,为了防止频繁的注册或登录行为。下面是我用java制作的一个验证码
- init和clinit区别①init和clinit方法执行时机不同init是对象构造器方法,也就是说在程序执行 new 一个对象调用该对象类
- 前言最近跟着视频在做一个分布式项目练练手,然后那个老师就说了下freemakker生成静态页面后,然后讲了下思路:添加商品时生成对应的商品静
- 在.Net下DateTime.Ticks获得的是个long型的时间整数,具体表示是至0001 年 1 月 1 日午夜 12:00:00 以来
- 所谓文件的断点续传,就是一个线程传输文件,另一个线程控制传输标识,以达到暂停文件效果、恢复文件上传的效果。本demo使用最基本的线程之间的通
- 最近做项目,碰到如下的需求:ViewPager分页,如果是6页(包括6页)就用圆点,如果是6页以上就用进度条来切换。前面一种交互方法最常见,
- 编辑上传文件的页面upload.html注意事项:上传方式使用POST不能使用GET(GET不能上传文件)表单 enctype 属性应该设置
- 一丶前言在之前我们学习了SpringBoot自动装配如何实现的,我们总结了Spring IOC的底层原理。但是我们还是不知道SpringAp
- 需求:如上图,需要隐藏右上角的多用户蓝色图标.修改后结果如下:锁屏相关的布局在SystemUIframeworks/base/package
- Web.Config,其中一部分配置如下: <appSettings> <
- 前言众所周知Java提供File类,让我们对文件进行操作,下面就来简单整理了一下File类的用法。 话不多说了,来一起看看详细的介绍吧1.基
- 在Android 5.0以后的版本中,定义一个button时,系统自动会加一个阴影的效果,有的时候这种效果看起来比较好,有的时候不符合UI的
- 一、时间复杂度1.什么是时间复杂度?空间效率,时间效率(较为关注)时间复杂度:算法中的操作执行次数,为算法的时间复杂度。(不是具体时间,而是
- 很多时候,我们需要使用C#中的WebClient 来收发数据,WebClient 类提供向 URI 标识的任何本地、Intranet 或 I
- 本文实例讲述了Android图片处理的方法。分享给大家供大家参考,具体如下:package cn.szbw.util;import Andr
- 本文实例为大家分享了Java实现答答租车系统的具体代码,供大家参考,具体内容如下项目需求: 基本界面需求:and:最后是把账单打印出来:个人
- 一、数据输出SpringMVC将数据携带给页面的储存工具,有三种,map,ModelMap,model,它们在底层实质还是使用到了Bindi