首页 > 其他分享 >springboot中的文件上传与下载

springboot中的文件上传与下载

时间:2023-09-12 16:44:24浏览次数:31  
标签:文件 String fileName e4% 上传 下载 springboot

首先回忆一下springmvc中的文件上传

1)引入文件上传相关jar包,commons-io 、commons-fileupload

2)文件上传表单提交方式必须为post

3)要求表单的enctype属性必须为:multipart/form-data

4)后台接收文件时,使用multipartFile 变量与前端name属性值保持一致

5)在springmvc的配置文件中必须加入,且id是框架规定写死的。

  <bean  id="multipartResolver" class="CommonsMultipartResolver">

springboot中的文件上传

1)在springboot项目中,自动引入了有关文件上传的jar包 commons-io、commons-file

2)准备表单

  提交方式:post    enctype="multipart/form-data"

<form action="${pageContext.request.contextPath}/upload/test" method="post" enctype="multipart/form-data">

   <input type="file" name="fileTest"/>

   <input type="submit" value="上传"/>
</form>

3)后台控制器方法参数multipart 和 前台name属性值保持一致

 

@Controller

@RequestMapping("/upload")

public class uploadController {

    @RequestMapping("/test")

    public String upload(MultipartFile fileTest, HttpServletRequest request) throws IOException {

        //获取文件的原始名

        String filename = fileTest.getOriginalFilename();

        System.out.println(filename);

        //根据相对路径获取绝对路径

        String realPath = request.getSession().getServletContext().getRealPath("/upload");

        fileTest.transferTo(new File(realPath,filename));

        return "success";

    }

}

 

4)修改springboot中默认上传文件大小(为1M)

#更改上传文件的大小上限

  http:

    multipart:

      max-file-size: 100MB        //最大上限为100MB

      max-request-size: 100MB     //最大请求上限与max-file-size保持一致

springboot中的文件下载

1)页面中提供一个下载的链接

<a href="${pageContext.request.contextPath}/download/test?fileName=idea快捷键.txt">点我下载</a>

2)开发下载文件的controller

下载文件的过程是一个读写操作,将文件读入输入流,然后通过输出流读出,读出的时候动态设置响应类型

 

@Controller

@RequestMapping("/download")

public class downloadController {

    @RequestMapping("/test")

    public void download(String fileName, HttpServletRequest request, HttpServletResponse response) throws Exception {

        //获取文件的绝对路径

        String realPath = request.getSession().getServletContext().getRealPath("upload");

        //获取输入流对象(用于读文件)

        FileInputStream fis = new FileInputStream(new File(realPath, fileName));

      //获取文件后缀(.txt)

        String extendFileName = fileName.substring(fileName.lastIndexOf('.'));

        //动态设置响应类型,根据前台传递文件类型设置响应类型

        response.setContentType(request.getSession().getServletContext().getMimeType(extendFileName));

        //设置响应头,attachment表示以附件的形式下载,inline表示在线打开

        response.setHeader("content-disposition","attachment;fileName="+URLEncoder.encode(fileName,"UTF-8"));

         //获取输出流对象(用于写文件)

        ServletOutputStream os = response.getOutputStream();

      //下载文件,使用spring框架中的FileCopyUtils工具

      FileCopyUtils.copy(fis,os);

 

    }

}

 

 

参考文章:http://blog.ncmem.com/wordpress/2023/09/12/springboot%e4%b8%ad%e7%9a%84%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e4%b8%8e%e4%b8%8b%e8%bd%bd/

欢迎入群一起讨论

 

 

标签:文件,String,fileName,e4%,上传,下载,springboot
From: https://www.cnblogs.com/songsu/p/17697122.html

相关文章

  • springboot单元测试
    参考文章:SpringBoot单元测试详解_springboottest单元测试_三分恶的博客-CSDN博客JUnit4(三)高级之assertThat和Matchers(匹配器)_FXBStudy的博客-CSDN博客 一:junit测试当你的单元测试代码不需要用到SpringBoot功能,而只是一个简单的测试时,你可以直接编写你的Junit测试......
  • Twitter视频怎么下载 如何下载推特高清视频教程
      自从小蓝鸟改成X之后,很多下载推特视频的工具都不好使了,问了朋友,有款工具软件可以保存,接下来我会把我保存推特视频到手机相册的方法直接分享给大家,希望对你有用。首先去下载【大神水印】这个软件,朋友说用了四五年,还挺靠谱。接下来详细步骤如下:①先点击分享按钮,复制你要的Tw......
  • 淘宝api:本地图片上传至淘宝 获取url(联合拍立淘接口)
    upload_img-上传图片到淘宝请求参数请求参数:imgcode=https://img14.360buyimg.com/n0/jfs/t1/52280/38/7464/140698/5d511f6bE08290bd7/f0bb32ddb47451e8.jpg参数说明:imgcode:base64加密后的图片内容(post方式),或者是直接上传(file方式)响应参数名称类型必须示例值描述......
  • 关于使用JAVA下载 2023年磁力搜索引擎前十排名
    最近比较火的磁力搜索神奇磁力皇,很多小伙伴在使用迅雷下载的时候,想知道怎么使用磁力链接,下面小编就为大家分享迅雷11使用磁力链接教程,感兴趣的小伙伴不要错过哦!      迅雷11怎么使用磁力链接?迅雷11使用磁力链接教程前提先下载打开磁力搜索导航 xiaqo.com     ......
  • 详解SpringBoot下文件上传与下载的实现
    SpringBoot后台如何实现文件上传下载?最近做的一个项目涉及到文件上传与下载。前端上传采用百度webUploader插件。有关该插件的使用方法还在研究中,日后整理再记录。本文主要介绍SpringBoot后台对文件上传与下载的处理。单文件上传/单文件上传@RequestMapping(value="/uploa......
  • springBoot spring6 无法加载 thymeleaf的,在html页面中无法智能感知 th:这些
    网上所有的坑我都试过了,还是无法解决问题,@ControllerpublicclassSellController{@RequestMapping("/test01")/*@ResponseBody*/publicStringindex(){return"test01";}}”test01“下面永远是波浪线,无论把网上查出来的解决问题的方案我......
  • docker部署springboot+vue项目环境安装及部署流程
    后端项目打jar包修改及配置项1、修改配置文件application-prod.yml中的mysql配置和redis配置2、切换Maven为生产模式3、Maven打包4、拿到打包后的jar 包5、拿到jar包之后在Linux中使用nohupjava-jarjeecg-system-start-3.5.0.jar>catalina.out2>&1&命令即可启动项......
  • xilinx赛灵思下载器jtag-hs3兼容alinx仿真fpga烧录digilent高速常见问题解答
    1.概述  XJTAG-HS3是XILINX的USB转JTAG的高速仿真器,可以下载、烧录和仿真Xilinx FPGA和CPLD芯片,以及配置PROM、FLASH. XJTAG-HS3比PlatformCableUSBII下载器快10倍速度。 可以在30Mbit/秒下驱动JTAG/SPI总线,并且能实现对XilinxZYNQ平台处理器核的重置。可以支持ZYN......
  • springboot、jvm调优(设置运行的参数)
    1、工具jdk自带的工具位置:找到窗口->应用程序2、问题和方式在SpringBoot项目中,调优主要通过配置文件和配置JVM的参数的方式进行。2.1springboot修改配置文件调优关于修改配置文件application.properties。https://docs.spring.io/spring-boot/docs/current/reference/ht......
  • springboot解决循环依赖
    importorg.springframework.context.annotation.Lazy;@ServicepublicclassCService{privateAServiceaService;//去掉@Autowired//采用构造器方式,加入Lazy注解publicCService(@LazyAServiceaService){this.aService=aService;......