springboot图文教程4—springboot实现文件上传下载

鹿老师的Java笔记      2022-05-10     711

关键词:

技术图片

有天上飞的概念,就要有落地的实现

  • 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例
  • 文章结尾配套自测面试题,学完技术自我测试更扎实
  • 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍

大哥大姐新年好,点赞转发不要少

SpringBoot 图文系列教程技术大纲

技术图片鹿老师的Java笔记

SpringBoot 图文教程系列文章目录

  1. SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」
  2. SpringBoot图文教程2—日志的使用「logback」「log4j」
  3. SpringBoot图文教程3—「‘初恋’情结」集成Jsp

前言

通过前面三篇的教程,小伙伴们已经可以实现一个web项目了,但是现在项目的功能还有点简单,接下来的文章中将会逐步完善添加新的功能。

本文所有的内容,将会在之前的demo上进行操作。
如果没有写好的demo,请去Git仓库下载:https://gitee.com/bingqilinpeishenme/Lu-JavaNodes/t……

文件上传

1.准备上传页面

<form action="路径...." method="post" enctype="multipart/form-data">
        <input type="file" name="aa">
        <input type="submit" value="上传">
</form>
<!--
    1. 表单提交方式必须是post
    2. 表单的enctype属性必须为multipart/form-data
    3. 后台接受变量名字要与文件选择name属性一致
    4.action写Controller的方法的路径
-->

2.编写控制器

@Controller
@RequestMapping("/file")
public class FileController {
  @RequestMapping("/upload")
  public String upload(MultipartFile aa, HttpServletRequest request) throws IOException {
//获取upload文件夹的路径 
        String realPath = request.getRealPath("/upload");
//将上传的文件写入 upload文件夹 中
        aa.transferTo(new File(realPath,aa.getOriginalFilename()));//文件上传
        return "index";
  }
}

3.修改文件上传大小

#上传时出现如下异常:  上传文件的大小超出默认配置  默认10M
nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (38443713) exceeds the configured maximum (10485760)

在application.properties配置文件中

技术图片

文件下载

1.提供下载文件链接

<href="../file/download?fileName=corejava.txt">corejava.txt</a>

2.开发控制器

@RequestMapping("/download")
public void download(String fileName, HttpServletRequest request, HttpServletResponse response) throws Exception {
//获取upload文件夹的路径
        String realPath = request.getRealPath("/upload");
//通过流读取文件
        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);
    }

总结

恭喜你完成了本章的学习,为你鼓掌!如果本文对你有帮助,请帮忙点赞,评论,转发,这对作者很重要,谢谢。

技术图片

让我们再次回顾本文的学习目标

  • 掌握SpringBoot中文件上传和文件下载的使用

要掌握SpringBoot更多的用法,请持续关注本系列教程。

下面体贴的我给朋友萌还准备了一些 自测面试题和项目案例,希望你能够成热打铁,将知识夯扎实。

上期自测面试题答案

见面试题集锦 https://gitee.com/bingqilinpeishenme/Lu-JavaNodes

自测面试题(答案见下期)

  • SpringMvc 文件上传的步骤
  • SpringMvc 文件下载的步骤

上期自测实现项目小案例答案

见码云仓库 https://gitee.com/bingqilinpeishenme/Lu-JavaNodes

自测实现项目小案例(答案见下期)

本次需求:

练习文中demo

求关注,求点赞,求转发

springboot-05-多模块结构项目构建与测试(详细图文教程)idea版(代码片段)

SpringBoot-05-多模块结构项目构建与测试(详细图文教程)IDEA版百度很多博客都不详细,弄了半天才把SpringBoot多模块项目构建开发整的差不多,特地重新创建配置,记录一下,也分享给有需要的人本篇也会非常详细的介绍涉及的... 查看详情

springboot2.0图文教程|集成邮件发送功能

...个人微信公众号:小哈学Java个人网站:https://www.exception.site/springboot/spring-boots-send-mail大家好,后续会间断地奉上一些SpringBoot2.x相关的博文,包括SpringBoot2.x教程和SpringBoot2.x新特性教程相关,如WebFlux等。还有自定义Starter组件的进阶... 查看详情

idea创建springcloud项目图文教程(eurekaserver注册中心)

 http://blog.csdn.net/hcmony/article/details/77854999idea创建springcloud项目图文教程(EurekaServer注册中心)(六)1,new-project选择springinitializr、  2,创建自己的包名,类名。    3,这一步与创建springboo 查看详情

mq4万字保姆教程|rabbitmq知识点整理与springboot整合附demo(图文并茂)(代码片段)

...】本文详细的从应用层面上讲解了RabbitMQ的使用以及整合Springboot;对于其概念进行讲解,提供了可以完成日常开发的接口与demo;文章目录导读工作队列1.workQueues轮询分发消息2.消息应答概念自动应答手动应答消息自动... 查看详情

简单易学的springboot打包成exe文件图文教程

本文章转自:乐字节文章主要讲解:SpringBoot打包成exe程序获取更多Java相关知识可以:点击链接加入裙聊【Java技术交流羊君】:933-873--310暗号:166前言近期做了一个前后端合并的springboot项目,但是要求打成exe文件,提供给不懂... 查看详情

🔥springboot图文教程2—日志的使用「logback」「log4j」

...有的代码案例都敲一遍大哥大姐新年好,点赞转发不要少SpringBoot图文系列教程技术大纲简单说明,教程分为基础篇,进阶篇和高级篇基础篇,本章力求简单快速的掌握基本的SpringBoot使用,并应用到项目中进阶篇,学会 查看详情

助力springboot自动配置的条件注解conditionalonxxx分析--springboo

注:该源码分析对应SpringBoot版本为2.1.0.RELEASE1前言本篇接如何分析SpringBoot源码模块及结构?--SpringBoot源码(二)上一篇分析了SpringBoot源码结构及各个模块pom之间的关系后,那么此篇开始就开始解开SpringBoot新特性之一--自动配置... 查看详情

intellijidea下载安装教程和搭建springboot开发环境及踩坑指南(超详细图文教程)

IntellijIDEA下载安装教程和搭建springboot开发环境1、项目实战效果图2、Intellijidea下载地址3、Intellijidea安装指南4、配置Intellijidea环境变量5、JavaSE开发工具包下载地址6、JavaSE开发工具包安装指南7、创建springboot项目8、文件结构目录... 查看详情

springboot入门极简教程开篇(代码片段)

SpringBoot入门极简教程开篇前言SpringBoot入门极简教程前言SpringBoot也使用了很长一段时间了,最初接触SpringBoot都是一边做项目一边查资料,没有系统的学习和整理过。这也是为什么会有这个系列–SpringBoot入门极简教程。本... 查看详情

elasticsearch学习+springboot实战教程(代码片段)

需要学习基础的可参照这两文章Elasticsearch学习+SpringBoot实战教程(一)Elasticsearch学习+SpringBoot实战教程(一)_桂亭亭的博客-CSDN博客Elasticsearch学习+SpringBoot实战教程(二)  Elasticsearch学习+Sprin... 查看详情

springboot集成elasticseach(代码片段)

...2.对比关系:3.详细说明:4.查出数据的解释 二、SpringBoot集成Elasticseach1.引入依赖2.添加配置3.创建pojo类与索引对应4.SpringData封装了基础的增删改查,自定义增删改查5.测试方法--增删改查如果本篇博客对您有一定的帮... 查看详情

springboo的简单搭建(eclipse+springboot+redis+mysql+thymeleaf)

之前都是自己配xml,很麻烦,就是把那些固有的配置粘来粘去,boot就是为了简化这些配置而生的关于boot的安装有很多种办法,我选择直接下载带有boot的eclipse(下载网站 https://spring.io/tools )(我当时看的是这篇博客,写... 查看详情

githubpages+hexo建站图文教程(代码片段)

文章目录1.GithubPagses服务2.环境准备2-1.免安装Hexo2-2.安装Git、NodeJs2-3.配置Git3.Hexo建站初始化4.HexoDeploy部署4-1.部署配置4-2.生成文件并部署4-3.访问服务5.博客个性化5-1.博文新建删除5-2.个性化主题6.line.mathAllisnotfunction报错1.GithubPagses... 查看详情

echarts使用教程(图文教程--版本4.6.0)

武汉加油----冲鸭,雄起!!!成都兄弟挺你!文章目录​​武汉加油----冲鸭,雄起!!!​​​​成都兄弟挺你!​​​​1.ECharts概述​​​​1.1ECharts介绍​​​​1.2安装使用​​​​1.3ECharts语法​​​​1.4option配置组件设... 查看详情

springboot总结(代码片段)

目录一,什么是SpringBoot二,作用/好处优点约定大于配置三,配置文件1.properties格式2.yml格式3.读取配置4.propertiesVSyml总结四,日志文件1.什么是日志2.作用3.日志级别4.日志的输出及打印一,什么是SpringBootSpring的... 查看详情

springboot集成mysql及mybatis

springboo机集成mybatis及mysql1,添加依赖<?xmlversion="1.0"?><projectxsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"xmlns="http://maven.apache.org/POM/ 查看详情

centos6.5(6.4)安装过程图文教程

CentOS6.4是最新的出的系统,这里分享下安装教程,有些设置大部分教程没出现过,特分享下,方便需要的朋友1、首先,要有一张CentOS6.4的安装介质,使用介质启动电脑出现如下界面界面说明:Installorupgradeanexistingsystem安装或升级... 查看详情

androidstudio版本控制之svn图文教程篇

AndroidStudio版本控制之SVN图文教程篇个人主页下载和安装客户端SVN客户端(TortoiseSVN)下载地址TortoiseSVN安装教程服务器SVN服务器(VisualSVNServer)下载地址VisualSVNServer安装教程版本说明AndroidStudio:2.1.3TortoiseSVN:1.9.4VisualSVNServer... 查看详情