Spring Boot 上传文件
Posted jwen1994
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot 上传文件相关的知识,希望对你有一定的参考价值。
1.上传文件
Spring Boot 上传文件也是使用 MultipartFile 类,和 Spring MVC 其实差不多,参考文章:https://www.cnblogs.com/jwen1994/p/11182923.html
<form enctype="multipart/form-data" method="post" action="/upload"> 文件:<input type="file" name="head_img"/> 姓名:<input type="text" name="name"/> <input type="submit" value="上传"/> </form>
Java 文件
package com.example.demo.controller; import java.io.File; import java.io.IOException; import java.util.UUID; import javax.servlet.http.HttpServletRequest; import com.example.demo.domain.JsonData; import com.example.demo.domain.JsonData; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; /** * 功能描述:文件测试 * * <p> 创建时间:Apr 22, 2018 11:22:29 PM </p> * <p> 作者:小D课堂</p> */ @Controller public class FileController private static final String filePath = "F:/IdeaProjects/springbootDemo/src/main/resources/static/images/"; @RequestMapping(value = "upload") @ResponseBody public JsonData upload(@RequestParam("head_img") MultipartFile file, HttpServletRequest request) //file.isEmpty(); 判断图片是否为空 //file.getSize(); 图片大小进行判断 String name = request.getParameter("name"); System.out.println("用户名:"+name); // 获取文件名 String fileName = file.getOriginalFilename(); System.out.println("上传的文件名为:" + fileName); // 获取文件的后缀名,比如图片的jpeg,png String suffixName = fileName.substring(fileName.lastIndexOf(".")); System.out.println("上传的后缀名为:" + suffixName); // 文件上传后的路径 fileName = UUID.randomUUID() + suffixName; System.out.println("转换后的名称:"+fileName); File dest = new File(filePath + fileName); try file.transferTo(dest); return new JsonData(0, fileName); catch (IllegalStateException e) e.printStackTrace(); catch (IOException e) e.printStackTrace(); return new JsonData(-1, "fail to save ", null);
文件大小配置,可以在启动类里面配置
@Bean public MultipartConfigElement multipartConfigElement() MultipartConfigFactory factory = new MultipartConfigFactory(); //单个文件最大 factory.setMaxFileSize("10240KB"); //KB,MB /// 设置总上传数据总大小 factory.setMaxRequestSize("1024000KB"); return factory.createMultipartConfig();
2.jar包方式运行Web项目
打包成 jar 包,需要增加 maven 依赖(注意:如果没加相关依赖,执行 maven 打包,运行后会报错:no main manifest attribute, in XXX.jar)
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
然后使用 java 命令运行 jar 包。
3.文件上传和访问需要指定磁盘路径
application.properties 中增加下面配置
web.images-path=/Users/jwen/Desktop
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:$web.upload-path
以上是关于Spring Boot 上传文件的主要内容,如果未能解决你的问题,请参考以下文章
企业级spring-boot案例-Spring Boot 上传文件(图片)
企业级spring-boot案例-Spring Boot 上传文件(图片)