栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot之文件上传下载

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot之文件上传下载

1 文件上传 1.1上传单个文件

在webapp目录下创建如图所示的文件夹:
1.编写fileLoad.jsp的代码如下:

<%@page pageEncoding="UTF-8" contentType="text/html; UTF-8" isELIgnored="false" %>


    文件上传
    


    
请选择文件:

如图所示:
2.编写FileController的代码如下:

package com.txw.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.UUID;

@SuppressWarnings("all")  // 注解警告信息
@Controller
@RequestMapping("/file")
public class FileController {

    @RequestMapping("/upload")
    public String upload(MultipartFile multipartFile, HttpServletRequest request) throws Exception {
       // 通过相对路径方式获取项目部署到服务器的绝对路径
        String realPath = request.getRealPath("/upload");
        // 设置文件名为:uuid+原始文件后缀
        int i = multipartFile.getOriginalFilename().lastIndexOf(".");
        String substring = multipartFile.getOriginalFilename().substring(i);
        String newFileName = UUID.randomUUID().toString().replace("-","") + substring;
        // 文件上传
        multipartFile.transferTo(new File(realPath,newFileName));
        return "index";
    }
}

如图所示:

1.2 上传多个文件

1.编写fileLoad.jsp的代码如下:

<%@page pageEncoding="UTF-8" contentType="text/html; UTF-8" isELIgnored="false" %>


    文件上传
    


    
请选择正面文件:
请选择背面文件:
请选择站立文件:

如图所示
2.编写FileController的代码如下:

package com.txw.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.UUID;

@SuppressWarnings("all")  // 注解警告信息
@Controller
@RequestMapping("/file")
public class FileController {

    @RequestMapping("/upload")
    public String upload(MultipartFile[] multipartFiles, HttpServletRequest request) throws Exception {
        for (MultipartFile multipartFile : multipartFiles) {
            if (multipartFile.getSize() != 0){
                // 通过相对路径方式获取项目部署到服务器的绝对路径
                String realPath = request.getRealPath("/upload");
                // 设置文件名为:uuid+原始文件后缀
                int i = multipartFile.getOriginalFilename().lastIndexOf(".");
                String substring = multipartFile.getOriginalFilename().substring(i);
                String newFileName = UUID.randomUUID().toString().replace("-","") + substring;
                // 文件上传
                multipartFile.transferTo(new File(realPath,newFileName));
            }
        }
        return "index";
    }
}

如图所示:
3.在application.properties添加的代码如下:

#设置文件上传的 文件大小限制
spring.servlet.multipart.max-file-size=200MB
spring.servlet.multipart.max-request-size=200MB
#开启jsp页面的调试模式
server.servlet.jsp.init-parameters.development=true

如图所示:
总结,如图所示:

2 文件下载

在webapp目录下创建如图所示的文件夹:
1.编写downLoad.jsp的代码如下:

<%@page pageEncoding="UTF-8" contentType="text/html; UTF-8" isELIgnored="false" %>


    文件下载
    


    a.git
aa.txt

如图所示:
2.编写FileController的代码如下:

    
    @RequestMapping("/download")
    public void download(String fileName, HttpServletRequest request, HttpServletResponse response) throws Exception {
        // 文件下载
        String realPath = request.getRealPath("/download");
        // 将服务器的文件读取到系统中
        FileInputStream is = new FileInputStream(new File(realPath, fileName));
        // 获取响应输出流
        ServletOutputStream os = response.getOutputStream();
        // 设置文件下载的方式 以及下载后的文件名 响应输出流编码
        response.setHeader("content-disposition","attachment;fileName="+ URLEncoder.encode(fileName,"UTF-8"));
        // 交换数据
        IOUtils.copy(is,os);
        // 关闭资源
        IOUtils.closeQuietly(is);
        IOUtils.closeQuietly(os);
    }

如图所示:
总结,如图所示:

3 SpringBoot中的 拦截器

1.编写MyInterceptor的代码如下:

package com.txw.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("all")   // 注解警告信息
public class MyInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("----------1----------");
        // 返回true 放行  返回false阻止
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("----------3----------");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("----------4----------");
    }
}

如图所示:
2.编写InterceptorConfig的代码如下:

package com.txw.config;

import com.txw.interceptor.MyInterceptor;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Component
@SuppressWarnings("all")  // 注解警告信息
public class InterceptorConfig implements WebMvcConfigurer {

    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //添加那个拦截器
        registry.addInterceptor(new MyInterceptor())
                // 拦截所有控制器请求
                .addPathPatterns("/test
@Controller
@RequestMapping("test")
public class TestController {

    @RequestMapping("test1")
    public String test1(){
        System.out.println("----------2----------");
        return "index";
    }

    @RequestMapping("test2")
    public String test2(){
        System.out.println("----------2----------");
        return "index";
    }
}

如图所示:

4 war包部署

1.设置打包方式为war的代码如下:

war

如图所示:
2. 在插件中指定入口类的代码如下:

 
      
        org.springframework.boot
        spring-boot-maven-plugin
        
        
          true
          
          -Dfile.encoding=UTF-8
          
          com.txw.SpringBoot02Application
        
      
    

如图所示:

3.排除内嵌的tomcat的代码如下:


      org.springframework.boot
      spring-boot-starter-tomcat
      
      provided
    
    
    
      org.apache.tomcat.embed
      tomcat-embed-jasper
      
      provided

如图所示:
6.编写的代码如下:

package com.txw;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@MapperScan("com.txw.dao")   // 必须在入口类中加入这个配置
@SpringBootApplication
public class SpringBoot02Application extends SpringBootServletInitializer {
   

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringBoot02Application.class);
    }
}

如图所示:
7.如图所示:说明打包成功!

8.这时在target目录下生成war,成功!
9.把springboot_02.war拷贝到Tomcat的webapps的目录下,如图所示:
10.启动Tomcat服务器,如图所示:说明启动成功!
通过浏览器访问:http://localhost:8080/springboot_02/fileLoad.jsp,如图所示:说明部署成功!总结,如图所示:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/423974.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号