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

SpringBoot文件上传和下载

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

SpringBoot文件上传和下载

SpringBoot文件上传和下载 一、SpringBoot文件上传 1、SpringMVC文件上传
1、Client处理 选择文件
   (1)form表单 选择文件 method="post"
   (2)enctype="multipart/form-data"
    (3) 准备文件框

2、服务端准备存储上传文件的目录 新建文件夹
项目/webapp/upload文件
3、开发文件上传Controller
public String fileUpload(MultipartFile upload){
//接收数据
//调用业务 接收的文件--》服务文件目录中 文件拷贝
upload.transforTo(new File(父目录,当前文件名))
//跳转页面
return "ok" //ok.jsp
}
4、配置文件上传解析器CommonsMultipartResolver id必须为MulyipartResolver
5、commons-fileUpload[引入] Commons-io
2、SpringBoot文件上传
  • 文件上传所需依赖
  
    org.springframework.boot
    spring-boot-starter-parent
    2.2.5.RELEASE
  

  
    
    
      org.springframework.boot
      spring-boot-starter-web
    
    
    
      org.apache.tomcat.embed
      tomcat-embed-jasper
    
    
      commons-fileupload
      commons-fileupload
      1.3.1
    
  

  • Application.yml文件配置
server:
  port: 8080
  servlet:
    jsp:
      init-parameters.development: true #开启jsp页面的热部署
spring:
  mvc:
    view:
      prefix: /
      suffix: .jsp
(1)单个文件上传案例
  • 前端
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>




  • 控制层
@Controller
@RequestMapping("file")
public class upload {
    @RequestMapping("upload")
    public String upload(MultipartFile upload, HttpServletRequest request) throws IOException {
        String realPath = request.getSession().getServletContext().getRealPath("upload");
        //调用业务 文件拷贝
        //处理文件名 UUID拼串=uuid+"."+扩展名
        String s = UUID.randomUUID().toString().replace("-", "") + "." + FilenameUtils.getExtension(upload.getOriginalFilename());
        //调用业务 文件拷贝
        upload.transferTo(new File(realPath,s));
        return  "index";
    }
}

(2)多个文件上传案例
  • 前端
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>






  • 控制层
@Controller
@RequestMapping("file")
public class upload {
    @RequestMapping("upload")
    public String upload(MultipartFile[] upload, HttpServletRequest request) throws IOException {
        for (int i = 0; i < upload.length; i++) {
            //考虑有用户没有上传文件
            if(upload[i]!=null){
                String realPath = request.getSession().getServletContext().getRealPath("upload");
                //处理文件名 UUID拼串=uuid+"."+扩展名 对文件名定义唯一标识
                String s = UUID.randomUUID().toString().replace("-", "") + "." + FilenameUtils.getExtension(upload[i].getOriginalFilename());
                //调用业务 文件拷贝
                upload[i].transferTo(new File(realPath,s));
            }
        }
        return  "index";
    }
}

(3)文件上传大小设置
  • 上传三个视频大小大概有100M

  • 报错,显示文件太大

  • SpringBoot内置文件大小是10M

  • 我们应该在application.yml中对文件大小进行设置
#修改文件上传大小的限制
  servlet:
    multipart:
      max-file-size:  209715200 #用来控制文件的上传
      max-request-size: 209715200  #用来指定服务端最大文件大小


  • application.properties
#修改文件上传的大小限制
#设置上传的文件大小
spring.servlet.multipart.max-file-size=100MB
#设置请求携带数据的大小
spring.servlet.multipart.max-request-size=100MB
二、文件下载 1、SpringMvc中文件下载

(1)在服务端文件系统中存储可以供下载的文件

项目/webapp/download

                   aa.txt

                    bb.txt

(2)在Client提供可以下载链接

下载 aa.txt

(3)开发文件下载Controller

public String downLoad(String fileName,HttpRequest request,HttpResponse response){
  //接收数据 要下载的文件名
  //调用业务 服务器文件---》Client
     a、根据文件名去服务器上加载对应文件 输入流
     InputStream is=new FileInputStream(new File(request.getSession().getServletVContext().getRealPath("/download"),fileName));
     b、获取响应输出流
    PrintWriter out= response.getWriter();
    c、文件下载的方式 inline:浏览器尝试打开,默认形式 attachment:附件形式下载
    response.setHeader("content-disposition","attachment;filename="+ERLEncoder.encode(fileName,"UTF-8"))
    d、拷贝文件
    IOutil.copy(加载文件的输入流,响应输出流)
    e、关闭资源
    IoUtil.
  //跳转页面
  return null;
}
2、SpringBoot文件下载
  • 文件上传所需依赖
  
    org.springframework.boot
    spring-boot-starter-parent
    2.2.5.RELEASE
  

  
    
    
      org.springframework.boot
      spring-boot-starter-web
    
    
    
      org.apache.tomcat.embed
      tomcat-embed-jasper
    
    
      commons-fileupload
      commons-fileupload
      1.3.1
    
  

  • Application.yml文件配置
server:
  port: 8080
  servlet:
    jsp:
      init-parameters.development: true #开启jsp页面的热部署
spring:
  mvc:
    view:
      prefix: /
      suffix: .jsp
  • 前端页面
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>


文件上传

下载 a.txt 下载 b.txt
  • 控制层
@Controller
@RequestMapping("file")
public class upload {
    @RequestMapping("download")
    public String download(String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException {
        //接收数据 文件名
        //文件下载
        //1、加载服务器指定名
        String realPath = request.getSession().getServletContext().getRealPath("/download");
        FileInputStream is = new FileInputStream(new File(realPath, fileName));
        //2、设置文件下载方式
        response.setHeader("content-disposition","attachment;filename="+ URLEncoder.encode(fileName,"utf-8"));
        //3、获取响应输出流
        PrintWriter writer = response.getWriter();
        //4、流数据交换
        IOUtils.copy(is,writer);
        //5、关闭资源
        IOUtils.closeQuietly(is);
        IOUtils.closeQuietly(writer);
        return  null;
    }

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

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

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