Java客户端服务端上传接收文件实现详解

这篇文章主要介绍了Java客户端服务端上传接收文件实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Java客户端通过HTTP协议上传文件, 服务端处理客户端请求, multipartfile转File, 实现客户端上传文件的存储

Java环境: JDK1.8

开发环境: IDEA

SpringBoot: 2.2.0

Maven: 3.6.3

Java客户端通过HTTP协议上传文件

// 引入pom依赖, hutool相关文档, https://www.hutool.cn/docs/ cn.hutoolhutool-all5.3.7

HashMap paramMap = new HashMap(); //文件上传只需将参数中的键指定(认file),值设为文件对象即可,对于使用者来说,文件上传与普通表单提交并无区别 paramMap.put("file", FileUtil.file("C:\文件路径\文件名称")); String result = HttpUtil.post("服务端IP:端口", paramMap);

Java服务端接收请求并实现文件的存储

工具类

public class Utils { public static void saveFile( multipartfile filecontent){ OutputStream os = null; InputStream inputStream = null; String fileName = null; try { inputStream = filecontent.getInputStream(); fileName = filecontent.getoriginalFilename(); } catch (IOException e) { e.printstacktrace(); } try { String path = "C:\test\"; // 2、保存到临时文件 // 1K的数据缓冲 byte[] bs = new byte[1024]; // 读取到的数据长度 int len; // 输出文件流保存到本地文件 File tempFile = new File(path); if (!tempFile.exists()) { tempFile.mkdirs(); } os = new FileOutputStream(tempFile.getPath() + File.separator + fileName); // 开始读取 while ((len = inputStream.read(bs)) != -1) { os.write(bs, 0, len); } } catch (IOException e) { e.printstacktrace(); } catch (Exception e) { e.printstacktrace(); } finally { // 完毕,关闭所有链接 try { os.close(); inputStream.close(); } catch (IOException e) { e.printstacktrace(); } } } }

Controller类

@Controller public class FileController { @RequestMapping("/") @ResponseBody public String index(@RequestParam(value = "file", required = false) multipartfile file, HttpServletRequest request, HttpServletResponse response) throws IOException { Utils.saveFile(file); return "Success"; } }

注意:

文件较大时spring-boot 服务端报上传文件错误“spring.servlet.multipart.max-file-size”

可以修改配置文件: application.properties, 添加以下配置..大小自行修改...

spring.servlet.multipart.max-file-size=200MB

spring.servlet.multipart.max-request-size=200MB

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...