SpringBoot文件上传+拦截器

news2024/11/24 17:45:10

1、resource static下有个图片,希望浏览器可以查看这个图片

访问:

若yml设置路径,则可以定义在static下才可以访问

classpath代表类路径,都在target下

也就是项目在运行后的resource下的文件都会到classes下去

无需在target下创建文件夹。在resource下创建文件夹即可

spring.mvc.static-path-pattern=/static/**
spring.mvc.static-path-pattern=/static/**
spring.web.resources.static-locations=classpath:/css

2、文件上传13:00

package com.example.helloworld.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;


import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;

/**
 * @Author Fxdll
 * @Date 2024/4/30 23:05
 * @PackageName:com.example.helloworld.controller
 * @ClassName: FileController
 * @Description: TODO
 * @Version 1.0
 */
@RestController
public class FileUploadController {
    @PostMapping("/upload")
    //等价于@RmoteMapping(value="/uplaod",method=RequestMethod.POST)
    public String up(String nickname, MultipartFile photo, HttpServletRequest request) throws IOException {
        //获取前端传来的昵称
        System.out.println(nickname);
    //获取上传文件的路径
        System.out.println( "文件名"+ photo.getOriginalFilename());
    //获取上传文件的类型
        System.out.println(photo.getContentType());
    //        System.out.println(System.getProperty("user.dir"));
        //获取项目的路径
     String path = request.getServletContext().getRealPath("/upload/");
        //获取上传文件的真实路径
        System.out.println(path);
        //保存文件
        saveFile(photo,path);
        // TODO: 返回上传成功消息
        return "文件上传成功";
    }

    private void saveFile(MultipartFile photo,String path)throws IOException {
//判断路径是否存在,不存在则创建
        File Dir = new File(path);
        if (!Dir.exists()) {

            //创建目录
            Dir.mkdirs();
        }
        File file = new File(path + photo.getOriginalFilename());
        photo.transferTo(file);
    }
}

3、如何让上传的图片也可以访问?

配置静态路径即可

第一个是设置单词上传大小上线

第二个是访问图片静态路径设置

spring.servlet.multipart.max-file-size=10MB
spring.web.resources.static-locations=class:/upload/

4、拦截器

5、拦截器定义

package com.example.helloworld.config;

import com.example.helloworld.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @Author Fxdll
 * @Date 2024/5/3 21:33
 * @PackageName:com.example.helloworld.config
 * @ClassName: Webconfig
 * @Description: TODO
 * @Version 1.0
 */
@Configuration
public class Webconfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/user/**");
    }
}

package com.example.helloworld.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @Author Fxdll
 * @Date 2024/4/30 22:31
 * @PackageName:com.example.helloworld.interceptor
 * @ClassName: LoginInterceptor
 * @Description: TODO 拦截器
 * @Version 1.0
 */

/**
 * request:
 * 1.获取请求信息(客户端传来的cooke,url参数,请求体)
 * response:
 * 1.设置响应信息
 */
public class LoginInterceptor  implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("LoginInterceptor");
        return true;
    }
}

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

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

相关文章

MES(制造执行系统)与PDCA循环,斩不断理还乱的关系。

MES系统算是B端系统中比较复杂的一种,这与我国制造业标准化程度较低有一定的关联,MES的存在就是要更好执行PDCA循环,二者关联是千丝万缕的,B系统提升专家借此为大家分享一下。 一、什么是PDCA PDCA(Plan-Do-Check-Ac…

前端Web开发基础知识

HTML定义 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。 什么是 HTML? HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言: HyperText Markup LanguageH…

# IDEA 复制项目 Module 出现 不同模块下的 Product 类报错

IDEA 复制项目 Module 出现 不同模块下的 Product 类报错 我们 用 IDEA 复制项目 Module 出现 不同模块下的 Product 类报错,发现复制的 module 名称没有改变或者 java 文件夹后面还有原项目 source root 字样,maven 父子项目没有标识等问题。 解决方法…

QQ+微信聊天记录分析工具,allin~

QQ群 ... QQ个人 微信群 个人朋友圈 更多维度有待探索~ 工具下载 TencentRecordAnalysisV1.0.2.zip 蓝奏云:链接: lanzoub.com/b00rn0g47e 密码:9hww 百度云:链接: pan.baidu.com/s/1Gf5EpJ 提取码: hp2p

Stm32CubeMX 为 stm32mp135d 添加 adc

Stm32CubeMX 为 stm32mp135d 添加 adc 一、启用设备1. adc 设备添加2. adc 引脚配置2. adc 时钟配置 二、 生成代码1. optee 配置 adc 时钟和安全验证2. linux adc 设备 dts 配置 bringup 可参考: Stm32CubeMX 生成设备树 一、启用设备 1. adc 设备添加 启用adc设…

R语言学习—1—将数据框中某一列数据改成行名

将数据框中某一列数据改成行名 代码 结果

DHCPv4_CLIENT_ALLOCATING_03: 发送DHCPREQUEST - 必须包含‘服务器标识符‘

测试目的: 验证客户端发送的DHCPREQUEST消息中是否包含“服务器标识符”选项,以指示它选择的服务器。 描述: 本测试用例旨在确保DHCP客户端在广播DHCPREQUEST消息时,必须包含“服务器标识符”选项。该选项用于指明客户端选择了…

Universal Thresholdizer:将多种密码学原语门限化

参考文献: [LS90] Lapidot D, Shamir A. Publicly verifiable non-interactive zero-knowledge proofs[C]//Advances in Cryptology-CRYPTO’90: Proceedings 10. Springer Berlin Heidelberg, 1991: 353-365.[Shoup00] Shoup V. Practical threshold signatures[C…

[嵌入式系统-53]:嵌入式系统集成开发环境大全 ( IAR Embedded Workbench(通用)、MDK(ARM)比较 )

目录 一、嵌入式系统集成开发环境分类 二、由MCU芯片厂家提供的集成开发工具 三、由嵌入式操作提供的集成开发工具 四、由第三方工具厂家提供的集成开发工具 五、开发工具的整合 5.1 Keil MDK for ARM 5.2 IAR Embedded Workbench(通用)、MDK&…

240503-关于VisualStudio2022社区版的二三事

240503-关于VisualStudio2022社区版的二三事 1 常用快捷键 快捷键描述AltEnter选中代码片段以提取方法Alt上下箭头移动选中的代码片段F12转到方法定义CtrlR*2批量修改选中的变量名称 2 自动生成构造函数 3 快速重写父类方法 4 节约时间:写代码使用“头插法”&…

深度解析 Spring 源码:从BeanDefinition源码探索Bean的本质

文章目录 一、BeanDefinition 的概述1.1 BeanDefinition 的定位1.2 BeanDefition 的作用 二、BeanDefinition 源码解读2.1 BeanDefinition 接口的主要方法2.2 BeanDefinition 的实现类2.2.1 实现类的区别2.2.2 setBeanClassName()2.2.3 getDependsOn()2.2.4 setScope() 2.3 Bea…

用双目相机实现坐标标定

一:相机参数设置和计算 镜头参数:MF2808-10MP 靶面尺寸2/3 ,视场角(对角水平垂直) 69.758.545.5 焦距:8mm,分辨率:16241240 1.1视场角的计算 图像分辨率越高,双目匹…

FP16、BF16、INT8、INT4精度模型加载所需显存以及硬件适配的分析

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Arduino 推出带 Wi-Fi的 32 位 UNO 板

Arduino 推出了下一代 UNO 板,引入了 32 位 Renesas 微控制器和 Espressif ESP32-S3 模块、一键云连接和大量 I/O 以及 128 红色 LED 矩阵。新型 UNO R4 板有两个版本,带 Wi-Fi 连接和不带 Wi-Fi 连接,并保持了 UNO R3 的外形尺寸、屏蔽兼容性…

分布式事务—> seata

分布式事务之Seata 一、什么是分布式事务? 分布式事务是一种特殊类型的事务,它涉及多个分布式系统中的节点,包括事务的参与者、支持事务的服务器、资源服务器以及事务管理器。 在分布式事务中,一次大型操作通常由多个小操作组成…

jvm垃圾回收机制介绍

JVM(Java虚拟机)是Java程序的运行环境,它负责执行字节码文件。JVM的工作原理主要包括以下几个部分:类加载器、执行引擎、垃圾收集器和内存管理。类加载器负责加载字节码文件并将其转换成Java平台上的机器码,执行引擎负…

vue3 + ts 快速入门(全)

文章目录 学习链接1. Vue3简介1.1. 性能的提升1.2.源码的升级1.3. 拥抱TypeScript1.4. 新的特性 2. 创建Vue3工程2.1. 基于 vue-cli 创建2.2. 基于 vite 创建(推荐)vite介绍创建步骤项目结构安装插件项目结构总结 2.3. 一个简单的效果Person.vueApp.vue …

数据结构:时间复杂度/空间复杂度

目录 一、时间复杂度 定义 常见的时间复杂度 如何计算时间复杂度 计算方法 三、实例分析 二、空间复杂度 定义 重要性 常见的空间复杂度 二、空间复杂度 定义 重要性 常见的空间复杂度 计算方法 三、实例分析 大O的渐进表示法 最好情况(Best Case…

吴恩达机器学习笔记:第 9 周-15 异常检测(Anomaly Detection) 15.3-15.4

目录 第 9 周 15、 异常检测(Anomaly Detection)15.3 算法15.4 开发和评价一个异常检测系统 第 9 周 15、 异常检测(Anomaly Detection) 15.3 算法 在本节视频中,我将应用高斯分布开发异常检测算法。 异常检测算法:对于给定的数据集 x ( 1 ) , x ( 2…

2024年短剧小程序视频解析下载

小程序下载工具我已经打包好了,有需要的自己下载一下 小程序下载工具链接:百度网盘 请输入提取码 提取码:1234 --来自百度网盘超级会员V10的分享 1.首先解压好我给大家准备好的压缩包 2.退出微信,点击电脑右下角进行退出 3…