springboot文件上传+拦截器
文章目录
- springboot文件上传+拦截器
- 1.静态资源访问
- 静态目录:
- 2.文件上传
- 文件上传配置文件书写
- 文件上传代码
- 3.拦截器
- 1.初始化拦截器
- 2.初始化配置文件
1.静态资源访问
静态目录:
这里的static就是spring boot默认存放静态资源的位置
当我在这个静态资源目录放入一张图片,就可以使用浏览器进行访问
浏览器访问效果
这个时候我们的访问地址是:
http://localhost:8080/1.gif
这告诉我们当我们访问静态资源目录时,只需要输入域名或者ip加上静态资源名称
2.文件上传
文件上传配置文件书写
# springboot文件上传配置
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
文件上传代码
package com.example.demo.controller;import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.IOException;
import java.net.http.HttpRequest;@RestController
public class FileController {private static final String UPLOADED_FOLDER = System.getProperty("user.dir")+"/upload/";@PostMapping("/up")public String upload(String nikename, MultipartFile f, HttpServletRequest request)throws IOException{
// System.out.println("文件大小:"+f.getSize());
// System.out.println(f.getContentType());
// System.out.println(f.getOriginalFilename());
// System.out.println(System.getProperty("user.dir"));String path = request.getServletContext().getRealPath("/upload/");System.out.println(path);saveFile(f,path);return "上传成功";}public void saveFile(MultipartFile f,String path)throws IOException{File upDir = new File(path);if(!upDir.exists()){upDir.mkdir();}File file = new File(path+ f.getOriginalFilename());f.transferTo(file);}}
3.拦截器
1.初始化拦截器
package com.example.demo.interceptor;import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;@Component
public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 在请求处理之前进行调用(Controller方法调用之前)System.out.println("Before Controller, URL : ");// 返回 true 表示继续流程(如调用下一个拦截器或处理器);返回 false 表示流程中断,不会继续调用其他的拦截器或处理器return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {// 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)// 可以通过modelAndView来修改模型数据System.out.println("After Controller, Before View");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {// 在整个请求结束之后被调用,也就是在DispatcherServlet渲染了对应的视图执行之后// 主要用于进行资源清理工作System.out.println("After everything, URL : " );}
}
2.初始化配置文件
package com.example.demo.config;import com.example.demo.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 注册拦截器,并设置拦截路径和排除路径registry.addInterceptor(new LoginInterceptor());}
}