欢迎查看 Java 开发之上帝之眼系列教程, 如果您正在为 Java 后端庞大的体系所困扰, 如果您正在为各种繁出不穷的技术和各种框架所迷茫, 那么本系列文章将带您窥探 Java 庞大的体系. 本系列教程希望您能站在上帝的角度去观察 (了解)Java 体系. 使 Java 的各种后端技术在你心中模块化; 让你在工作中能将 Java 各个技术了然于心; 能够即插即用. 本章我们来一起了解 Spring 的文件上传全解析.
首先对于 Spring 的文件上传, 我们仅仅需要关注三点
Spring 需要具备解析 Multipart 能力
前端需要文件转换为 Multipart 请求
在 Controller 中接收 Multipart 请求
在 Spring 项目中配置 Multipart 解析器
- StandardServletMultipartResolver
- CommonsMultipartResolver
在 JavaConfig 中配置 StandardServletMultipartResolver
- @Bean
- public MultipartResolver multipartResolver() throws IOException {
- return new StandardServletMultipartResolver();
- }
- @Override
- protected void customizeRegistration(ServletRegistration.Dynamic registration) {
- registration.setMultipartConfig(new MultipartConfigElement("D://"));
- }
在 JavaConfig 配置 CommonsMultipartResolver
- @Bean
- public 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 开发之上帝之眼系列教程前言和章节目录汇总
勘误 & 感谢
本系列文章资料来源很多出自于互联网和在下本身的见解, 受限于个人技术能力水平和其他相关知识的限制, 相关见解错误或者资料引用错误请各位帮助留言校正! 引用资料多来自于互联网, 在下在引用前会遵循各位前辈或者博主的引用说明表示感谢, 但互联网资料多是转发再转发或存在遗漏请原作者内信联系指正.
来源: https://www.cnblogs.com/jimisun/p/9761812.html