欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系。本系列教程希望您能站在上帝的角度去观察(了解)Java体系。使Java的各种后端技术在你心中模块化;让你在工作中能将Java各个技术了然于心;能够即插即用。本章我们来一起了解Spring的文件上传全解析。

首先对于Spring的文件上传,我们仅仅需要关注三点

  1. Spring需要具备解析Multipart能力
  2. 前端需要文件转换为Multipart请求
  3. 在Controller中接收Multipart请求

在Spring项目中配置Multipart解析器

  • StandardServletMultipartResolver
  • CommonsMultipartResolver

在JavaConfig中配置StandardServletMultipartResolver

 @Beanpublic MultipartResolver multipartResolver() throws IOException {return new StandardServletMultipartResolver();}@Overrideprotected void customizeRegistration(ServletRegistration.Dynamic registration) {registration.setMultipartConfig(new MultipartConfigElement("D://"));}

在JavaConfig配置CommonsMultipartResolver

  @Beanpublic MultipartResolver multipartResolver() throws IOException {CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();commonsMultipartResolver.setUploadTempDir(new FileSystemResource("/temp"));return commonsMultipartResolver;}

在XML配置CommonsMultipartResolver

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="maxUploadSize" value="104857600"/><property name="maxInMemorySize" value="4096"/><property name="defaultEncoding" value="UTF-8"></property></bean>

在前端传递multipart请求

<form action="/fileUpload" method="post" enctype="multipart/form-data"><input type="file" name="file"><input type="submit" value="submit">
</form>

在Controller方法参数中接收multipart请求

  • @RequestPart("file") byte[] file
  • @RequestPart("file") Part file
  • MultipartFile file
    @RequestMapping("/fileUpload")public void FileUpload(@RequestPart("file") byte[] file) {...}
    @RequestMapping("/fileUpload")public void FileUpload(@RequestPart("file") Part file) throws IOException {file.write("D://test.jpg");}
    @RequestMapping("/fileUpload")public void FileUpload(MultipartFile file) throws IOException {String originalFilename = file.getOriginalFilename();file.transferTo(new File("D://" + originalFilename));}

Java开发之上帝之眼系列教程其他文章

  • Java开发之上帝之眼系列教程前言和章节目录汇总

勘误&感谢

  本系列文章资料来源很多出自于互联网和在下本身的见解,受限于个人技术能力水平和其他相关知识的限制,相关见解错误或者资料引用错误请各位帮助留言校正!引用资料多来自于互联网,在下在引用前会遵循各位前辈或者博主的引用说明表示感谢,但互联网资料多是转发再转发或存在遗漏请原作者内信联系指正。

第四章:Spring项目文件上传两种方式(全解析)相关推荐

  1. Python页面自动化文件上传两种方式

    Python页面自动化测试之文件上传的两种方式 --广州_vivi 最近教学过程,学员项目出现测试上传文件无法执行的情况,分析发现学员项目的上传按钮并不是input按钮,导致无法使用直接定位元素方式进 ...

  2. 头像截图上传两种方式(SWFUpload、一个简单易用的flash插件)

    SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统<input ty ...

  3. spring配置属性的两种方式

    spring配置属性有两种方式,第一种方式通过context命名空间中的property-placeholder标签 <context:property-placeholder location ...

  4. Spring Boot2 整合 Shiro ,两种方式全总结!

    前言:在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro. 文章目录 一.Spring Securit ...

  5. Spring系列教程八: Spring实现事务的两种方式

    2019独角兽企业重金招聘Python工程师标准>>> 一. Spring事务概念: 事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败的 ...

  6. Express全系列教程之(四):获取Post参数的两种方式

    一.关于POST请求 post方法作为http请求很重要的一部分,几乎所有的网站都有用到它,与get不同,post请求更像是在服务器上做修改操作,它一般用于数据资源的更新. 相比于get请求,post ...

  7. spring 注入bean的两种方式

    我们都知道,使用spring框架时,不用再使用new来实例化对象了,直接可以通过spring容器来注入即可. 而注入bean有两种方式: 一种是通过XML来配置的,分别有属性注入.构造函数注入和工厂方 ...

  8. Spring定义Bean的两种方式:<bean>和@Bean

    前言: Spring中最重要的概念IOC和AOP,实际围绕的就是Bean的生成与使用. 什么叫做Bean呢?我们可以理解成对象,每一个你想交给Spring去托管的对象都可以称之为Bean. 今天通过S ...

  9. apache shiro怎么升级_Spring Boot 整合 Shiro ,两种方式全总结!

    在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro. 一般来说,Spring Security 和 S ...

最新文章

  1. Maven 手动添加 JAR 包到本地仓库
  2. 分享3一个博客HTML5模板
  3. 找出两列表共有的元素python,两个列表之间的公共元素未在Python中使用集
  4. Boost正则表达式的编译与使用方法集
  5. 24 SD配置-主数据-维护客户主记录中的保留字段
  6. c语言 自动化办公,办公自动化快捷键大全
  7. 郴州大数据产业招商会在深举行,中琛源科技签约智慧水务项目
  8. 雕刻机控制软件破解笔记
  9. jersey 过滤_Jersey
  10. 这几招教你如何增加食物中铁的吸收
  11. YOLO测试图片显示准确率值
  12. 商业研究(13):下厨房,从投资角度看这个项目的前景和价值
  13. Ubuntu Server 20.04 下 HustOJ 安装
  14. Kali使用中文输入法
  15. [MAS]智能体交流 Agent Communication
  16. 【图解UDS】UDS汽车诊断标准协议(ISO 14229)带你入门到精通
  17. 安卓桌面壁纸_火莹视频桌面:好玩的动态桌面壁纸软件,让你的桌面动起来
  18. Rust P2P网络应用实战-1 P2P网络核心概念及Ping程序
  19. html5网页综合案例制作,网页开发与制作 HTML5页面元素及属性 2-21综合案例(6页)-原创力文档...
  20. 关于ARM指令的英文全称(方便记忆|巧记汇编指令)

热门文章

  1. Office 365 成微软 AI 落地载体, 53 项 AI 功能你用过多少?
  2. MySQL + JSON = 王炸!!
  3. Java 日志框架适配/冲突解决方案(值得收藏)
  4. 监控告警满飞天,运维在家睡到自然醒...
  5. 牛逼!一个故事讲清楚 NIO 了
  6. 如何优雅的实现 try/catch 异常块?
  7. 2w字长文,让你瞬间拥有「调用链」开发经验
  8. 来普及一下Redis主从复制以及主从复制原理
  9. 260万奖金池!目标检测新赛事来了
  10. 机器学习4个常用超参数调试方法!