java map转Multipart/form-data类型body实例

 更新时间:2020年05月05日 19:34:53   作者:qq_33770498  
这篇文章主要介绍了java map转Multipart/form-data类型body实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

我就废话不多说了,大家还是直接看代码吧!

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();
    }

以上这篇java map转Multipart/form-data类型body实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring框架中IoC容器与DI依赖注入教程

    Spring框架中IoC容器与DI依赖注入教程

    IOC也是Spring的核心之一了,之前学的时候是采用xml配置文件的方式去实现的,后来其中也多少穿插了几个注解,但是没有说完全采用注解实现。那么这篇文章就和大家分享一下,全部采用注解来实现IOC + DI
    2023-01-01
  • java常见事件响应方法实例汇总

    java常见事件响应方法实例汇总

    这篇文章主要介绍了java常见事件响应方法,对于初学者有很好的参考借鉴价值,分享给大家,需要的朋友可以参考下
    2014-08-08
  • Java 注解的使用实例详解

    Java 注解的使用实例详解

    这篇文章主要介绍了Java 注解的使用实例详解的相关资料,需要的朋友可以参考下
    2016-12-12
  • Java中的CopyOnWriteArrayList原理详解

    Java中的CopyOnWriteArrayList原理详解

    这篇文章主要介绍了Java中的CopyOnWriteArrayList原理详解,如源码所示,CopyOnWriteArrayList和ArrayList一样,都在内部维护了一个数组,操作CopyOnWriteArrayList其实就是在操作内部的数组,需要的朋友可以参考下
    2023-12-12
  • java三个环境变量配置简单教程

    java三个环境变量配置简单教程

    这篇文章主要为大家详细介绍了java三个环境变量配置简单教程,配置path变量、配置classpath变量、最后是配置JAVA_HOME变量,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • Java之Mybatis多层嵌套查询方式

    Java之Mybatis多层嵌套查询方式

    这篇文章主要介绍了Java之Mybatis多层嵌套查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • SpringBoot数据库查询超时配置详解

    SpringBoot数据库查询超时配置详解

    这篇文章主要介绍了SpringBoot数据库查询超时配置,超时配置可以避免长时间占用数据库连接,提高系统的响应速度和吞吐量,还可以快速的反馈可以提升用户体验,避免用户因长时间等待而感到挫败,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-11-11
  • Maven使用方法详及方式详细介绍

    Maven使用方法详及方式详细介绍

    使用maven仓库的话需要从网上下载maven的包,比如“apache-maven-3.5.4-bin.tar”,下载完成之后解压,在解压的文件夹中的conf目录下的settings.xml文件夹下就可以配置maven远程仓库和本地仓库的地址
    2022-11-11
  • Spring Boot整合logback一个简单的日志集成架构

    Spring Boot整合logback一个简单的日志集成架构

    今天小编就为大家分享一篇关于Spring Boot整合logback一个简单的日志集成架构,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Java集合之整体结构

    Java集合之整体结构

    Java中集合类是Java编程中使用最频繁、最方便的类。接下来通过本文给大家介绍Java集合之整体结构,一起看看吧
    2016-05-05

最新评论