首页 > 其他分享 >Springboot文件上传代码笔记

Springboot文件上传代码笔记

时间:2023-11-23 18:22:35浏览次数:30  
标签:Springboot UploadFilter 笔记 File org import multipartFile 上传 public

1.在src下创建filter包,包内Class名UploadFilter

package com.gd.filter;

import org.apache.catalina.servlet4preview.http.HttpServletRequest;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

@WebFilter(urlPatterns = "/upload/*", filterName = "uploadFilter")
public class UploadFilter implements Filter {
    //定义文件路径常量
    public static final File UPLOAD_FOLDER = new File("F:\\nginx-1.14.2\\html\\upload");//修改上传路径
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("初始化uploadFilter");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        //转换ServletRequest request类型
        HttpServletRequest req = (HttpServletRequest) request;
        String uri = req.getRequestURI();
        int index = uri.lastIndexOf("/");
        String fileName = uri.substring(index + 1);
        File file = new File(UploadFilter.UPLOAD_FOLDER, fileName);
        //输入流
        FileInputStream fileInputStream = new FileInputStream(file);
        byte[] bs = new byte[(int) file.length()];
        fileInputStream.read(bs);
        //关闭流
        fileInputStream.close();
        //转换ServletResponse response类型
        HttpServletResponse resp = (HttpServletResponse) response;
        resp.getOutputStream().write(bs);
        System.out.println("---请求进入--");
    }

    @Override
    public void destroy() {

    }
}

2.在控制层(controller)编写交互接口

package com.gd.controller;

import com.gd.filter.UploadFilter;
import org.apache.catalina.servlet4preview.http.HttpServletRequest;
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.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@RestController
public class UploadController {

    /**
     * 文件上传
     *
     * @param multipartFile
     * @param request
     * @return
     */
    @RequestMapping("/uploadFile")
    public String uploadFile(@RequestParam("multipartFile") MultipartFile multipartFile,HttpServletRequest request) {
        System.out.println(multipartFile.getOriginalFilename());
        System.out.println("上传的文件夹路径:" + UploadFilter.UPLOAD_FOLDER);
        if (UploadFilter.UPLOAD_FOLDER.exists() == false) {
            UploadFilter.UPLOAD_FOLDER.mkdirs();
        }
        //准备用来接收数据的文件
        File uploadFile = new File(UploadFilter.UPLOAD_FOLDER, multipartFile.getOriginalFilename());
        try {
            multipartFile.transferTo(uploadFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "ok";
    }
}

3.前端页面上传入口静态页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/uploadFile" method="post" enctype="multipart/form-data">
    <input type="file" name="multipartFile">
    <input type="submit" value="提交">
</form>

</body>
</html>

 

 

参考文章:http://blog.ncmem.com/wordpress/2023/11/23/springboot%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e4%bb%a3%e7%a0%81%e7%ac%94%e8%ae%b0/

欢迎入群一起讨论

 

 

标签:Springboot,UploadFilter,笔记,File,org,import,multipartFile,上传,public
From: https://www.cnblogs.com/songsu/p/17852196.html

相关文章

  • 刘金玉QT学习笔记:7-简易用户信息管理界面实现_实现用户信息增改
    1.同第六课方式在widget里连接并创建数据库。 2.通过QSqlQuery使用sql语句的第二种方法:-在不同的函数中都要使用->做成全局变量 3.表格网格控件tableview控件显示数据库的内容为表格行-ui拖出控件-qtableview控件通过QSqlQueryModel来渲染数据过程:1widget.h引入#i......
  • 学习笔记11—20211303
    一、学习任务自学教材第13章,提交学习笔记(10分),评分标准如下1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT:......
  • Golang学习笔记-自定义日志轮转及输出
    packagepkgimport( "fmt" "log" "log/slog" "os" "time")varcontrolLogger*slog.LoggervarfileLogger*slog.Loggerconst( timeFormat="2006-01-02")funcInitLog(filepathstring){......
  • Springboot 自动发送邮件
      完成Springboot配置发件邮箱,自动给其他邮箱发送邮件功能一、创建springboot基础项目,引入依赖<!--SpringBoot邮件依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency&g......
  • 秦疆的Java课程笔记:37 流程控制 switch选择结构
    多选择结构还有一个实现方式就是switchcase语句。switchcase语句判断一个变量与一系列值中某个值是否相等,每个值为一个分支。if判断区间,switch匹配一个具体的值。语法:switch(expression){ casevalue: //语句 break;//可选 casevalue: //语句 break;//可选 ......
  • FPGA入门笔记006——状态机设计实例
    状态分析:状态1:等待“H”的到来,如果检测到“H”,进入状态2,检测“e”,否则一直等待“H”;状态2:检测当前字符是否是“e”,如果是“e”,跳转到状态3,检测“l”,否则,回到状态1,重新等待“H”;状态3:检测当前字符是否是“l”,如果是“l”,跳转到状态4,检测“l”,否则,回到状态1,重新等待“H”;状态4:......
  • spring和springboot定时任务线程池配置
    spring和springboot定时任务线程池配置目录spring和springboot定时任务线程池配置1背景2配置2.1命名空间配置2.2yaml配置3参考文档1背景项目有几个新增的月末报表生成定时任务(使用spring内置的TaskScheduler),相关业务人员反馈报表没有及时生成,让我比较疑惑:虽然生成比较耗......
  • 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第十一周学习笔记
    202113252023-2024-1《信息安全系统设计与实现(上)》第十一周学习笔记一、任务要求自学教材第13章,提交学习笔记(10分),评分标准如下1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X......
  • java 实现文件夹上传(springBoot 框架)
    java实现文件夹上传(springBoot框架)有时我们后台管理等服务可能会有这样一个简单需求,就是根据文件夹将整个文件夹下的所有资源都上传到我们的服务器上,本人也是搜索了大量资料,最终以最简单便捷的方式实现该功能,具体操作步骤如下一、前端如何设置上传组件并将资源上传到后台服务这......
  • Linux第六章学习笔记
    本章学习目标1.掌握输入/输出重定向2.熟悉管道符的应用3.了解进程管道相关知识 I/O重定向给出两个进程(见书本88,89页),上述两个进程都有0、1、2这三个文件描述符,这也是绝大多数进程都有的。0表示标准输入,可以理解为键盘输入;1表示标准输出,输出到终端;2表示标准错误,输出到终端;3及......