springboot文件上传+拦截器

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());}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/880188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZYNQ FPGA自学笔记~操作PLL

一 时钟缓冲器、管理和路由 垂直时钟中心(clock backbone)将设备分为相邻的左侧和右侧区域,水平中心线将设备分为顶部和底部两侧。clock backbone中的资源镜像到水平相邻区域的两侧,从而将某些时钟资源扩展到水平相邻区域。BUFG不…

考研数据结构——C语言实现小顶堆

数组初始化: 首先,我们有一个整数数组arr,里面包含了一系列需要排序的数字。数组的长度n是通过对数组arr的总字节大小除以单个元素的字节大小得到的。 小顶堆调整函数: adjustHeapMin函数的作用是将数组中的元素从某个节点向下调整…

[001-02-001].第2节:java开发环境搭建

4.1.书籍推荐: 4.2.人机交互方式 1.图形化界面(Graphical User Interface GUI)这种方式简单直观,使用者易于接受,容易上手操作2.命令行方式(Command Line Interface CLI):需要有一个控制台,输入特定的指令&#xff0c…

好用的工具网址

代码类: 1,json解析:JSON在线解析及格式化验证 - JSON.cn 2.传参转化编码 在线url网址编码、解码器-BeJSON.com 日常: 1.莆田医院查询:滚蛋吧!莆田系

[数据结构]无头单向非循环链表的实现与应用

文章目录 一、引言二、线性表的基本概念1、线性表是什么2、链表与顺序表的区别3、无头单向非循环链表 三、无头单向非循环链表的实现1、结构体定义2、初始化3、销毁4、显示5、增删查改 四、分析无头单向非循环链表1、存储方式2、优点3、缺点 五、总结1、练习题2、源代码 一、引…

插入、更新与删除MySQL记录

在现代应用开发中,数据库操作是非常重要的一环。作为程序员,熟练掌握数据库的增删改功能,能够更有效地管理数据并提高开发效率。 本课程将围绕插入、更新与删除记录这三个操作展开,涵盖SQL中的常见语句:INSERT INTO、UPDATE 和 DELETE,并结合实际应用中的常见问题讨论如…

Scikit-learn 识别手写数字

Scikit-learn 识别手写数字的完整教程(包含各模型预测结果和准确率) 本教程将使用 Scikit-learn 提供的手写数字数据集,分别使用支持向量机 (SVM)、随机森林和逻辑回归三种模型进行训练,并展示它们的预测结果和准确率。 1. Scik…

Frontiers出版社系列SCISSCI合集

【SciencePub学术】本期,小编根据WOS数据库,整理了一下Frontiers出版社系列的SCI&SSCI合集,以供各位学者投稿参考! 来源:WOS数据库 Frontiers系列期刊中,Frontiers in Immunology以其5.7分的影响因子位…

第十四届蓝桥杯嵌入式国赛

一. 前言 本篇博客主要讲述十四届蓝桥杯嵌入式的国赛题目,包括STM32CubeMx的相关配置以及相关功能实现代码以及我在做题过程中所遇到的一些问题和总结收获。如果有兴趣的伙伴还可以去做做其它届的真题,可去 蓝桥云课 上搜索历届真题即可。 二. 题目概述 …

每日一练:二叉树的层序遍历

102. 二叉树的层序遍历 - 力扣(LeetCode) 一、题目要求 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,n…

合宙LuatOS应用,与时间相关那些事

合宙嵌入式操作系统LuatOS——在蜂窝物联网模组上推出开源二次开发框架,功能齐全性能稳定,可大幅度降低用户的研发成本和研发周期。 在LuatOS中,获取时间函数用得最多的就是os.time()函数了。接下来,我会讲一些与这个函数以及其他…

c++924

2 #include <iostream> #include <cstring>using namespace std;class MyString { private:char *str; // 记录C风格的字符串int size; // 记录字符串的实际长度public:// 定义无参构造MyString() : size(0) {str new char[1];str[0] \0;cou…

中秋节特别游戏:给玉兔投喂月饼

&#x1f5bc;️ 效果展示 &#x1f4dc; 游戏背景 在中秋这个充满诗意的节日里&#xff0c;玉兔因为贪玩被赶下人间。在这个温柔的夜晚&#xff0c;我们希望通过一个小游戏&#xff0c;让玉兔感受到人间的温暖和关怀。&#x1f430;&#x1f319; &#x1f3ae; 游戏设计 人…

Oracle数据库的比较运算符Comparison Operators

Comparison operators compare one expression to another. The result is always either TRUE, FALSE, or NULL. If the value of one expression is NULL, then the result of the comparison is also NULL. 如果一个表达式的值为NULL&#xff0c;那么比较的结果也是NULL。 …

5、论文阅读:深水下的图像增强

深水下的图像增强 前言介绍贡献UWCNN介绍网络架构残差Residuals块 Blocks网络层密集串联网络深度减少边界伪影网络损失Loss后处理前言 水下场景中,与波长相关的光吸收和散射会降低图像的可见度,导致对比度低和色偏失真。为了解决这个问题,我们提出了一种基于卷积神经网络的…

Rust调用tree-sitter解析C语言

文章目录 一、Rust 调用 tree-sitter 解析 C 语言代码1. 设置 Rust 项目2. 添加 tree-sitter 依赖3. 编写 Rust 代码4. 运行程序5. 编译出错 二、解决步骤1. 添加 tree-sitter 构建依赖2. 添加 tree-sitter-c 源代码3. 修改 build.rs 以编译 tree-sitter-c 库4. 修改 Cargo.tom…

Ubuntu中常用的操作指令

ubuntu中常通过在命令行中输入各种指令完成操作。 文件操作指令 ls&#xff1a;列出目录内容 ls cd&#xff1a;改变当前目录 # 进入指定目录 cd /path/to/directory # 返回上一级目录 cd .. # 返回用户主目录 cd ~ cp&#xff1a;复制文件或目录 # 复制文件 …

伊犁云计算22-1 apache 安装rhel8

1 局域网网络必须通 2 yum 必须搭建成功 3 apache 必须安装 开干 要用su 用户来访问 一看httpd 组件安装完毕 到这里就是测试成功了 如何修改主页的目录 网站目录默认保存在/var/WWW/HTML 我希望改变/home/www 122 127 167 行要改

频率色散效应及其与时间选择性衰落信道的联系

频率色散效应&#xff08;Frequency Dispersion Effect&#xff09;是在无线通信中&#xff0c;由于信道中的多普勒效应引起的现象&#xff0c;它会导致接收信号频谱的扩展和频率上的变化。该效应与信道的时间变化有关&#xff0c;是时间选择性衰落信道&#xff08;time-select…

打造灵活DateTimePicker日期时间选择器组件:轻松实现时间的独立清除功能

element ui中日期和时间选择器&#xff08;DateTimePicker&#xff09;是一个常见且重要的组件。它允许用户轻松地选择日期和时间&#xff0c;极大地提升了用户体验。然而&#xff0c;在某些场景下&#xff0c;用户可能需要更细粒度的控制&#xff0c;例如单独清除已选择的时间…