zoukankan      html  css  js  c++  java
  • Springboot文件上传代码笔记

    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>
  • 相关阅读:
    多重背包POJ1276不要求恰好装满 poj1014多重背包恰好装满
    哈理工1053完全背包
    求最小公倍数与最大公约数的函数
    Bus Pass ZOJ 2913 BFS 最大中取最小的
    POJ 3624 charm bracelet 01背包 不要求装满
    HavelHakimi定理(判断一个序列是否可图)
    z0j1008Gnome Tetravex
    ZOJ 1136 Multiple BFS 取模 POJ 1465
    01背包 擎天柱 恰好装满 zjut(浙江工业大学OJ) 1355
    zoj 2412 水田灌溉,求连通分支个数
  • 原文地址:https://www.cnblogs.com/StanleyBlogs/p/10482830.html
Copyright © 2011-2022 走看看