在这篇博客中,我们将展示如何在Spring Boot中实现文件的下载功能。
  还是遵循笔者写博客的一贯风格,简单又不失详细,实用又能让你学会。
  本次建立的Spring Boot项目的主要功能为文件下载,而且这也是唯一功能,当然,作为例子,要尽可能简单,所以,功能简化为只下载E盘music_eg目录下的某一个文件。
  该Spring Boot项目的名称为file_download,其具体结构如下:

build.gradle文件的代码如下:

buildscript {ext {springBootVersion = '2.0.3.RELEASE'}repositories {mavenCentral()}dependencies {classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")}
}apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8repositories {mavenCentral()
}dependencies {compile('org.springframework.boot:spring-boot-starter-web')testCompile('org.springframework.boot:spring-boot-starter-test')
}

我们只需要创建一个控制器(Controler)文件,即Controller目录下的File_Download.java,其完整目录如下:

package com.example.file_download.Controller;import java.io.*;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class File_Download {//实现Spring Boot 的文件下载功能,映射网址为/download@RequestMapping("/download")public String downloadFile(HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException {// 获取指定目录下的第一个文件File scFileDir = new File("E://music_eg");File TrxFiles[] = scFileDir.listFiles();System.out.println(TrxFiles[0]);String fileName = TrxFiles[0].getName(); //下载的文件名// 如果文件名不为空,则进行下载if (fileName != null) {//设置文件路径String realPath = "E://music_eg/";File file = new File(realPath, fileName);// 如果文件名存在,则进行下载if (file.exists()) {// 配置文件下载response.setHeader("content-type", "application/octet-stream");response.setContentType("application/octet-stream");// 下载文件能正常显示中文response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));// 实现文件下载byte[] buffer = new byte[1024];FileInputStream fis = null;BufferedInputStream bis = null;try {fis = new FileInputStream(file);bis = new BufferedInputStream(fis);OutputStream os = response.getOutputStream();int i = bis.read(buffer);while (i != -1) {os.write(buffer, 0, i);i = bis.read(buffer);}System.out.println("Download the song successfully!");}catch (Exception e) {System.out.println("Download the song failed!");}finally {if (bis != null) {try {bis.close();} catch (IOException e) {e.printStackTrace();}}if (fis != null) {try {fis.close();} catch (IOException e) {e.printStackTrace();}}}}}return null;}}

这样我们就完成了Spring Boot的文件下载功能。什么?这样就搞定了?是的,就是这么简单,因为只实现了文件下载功能。具体的代码留给读者好好分析哦~~
  写完代码并不是我们的最终目的,我们还差最后一步,那就是测试!测试,真的相当重要啊~
  运行Spring Boot项目后,在浏览器中输入:http://localhost:8080/download , 你会发现什么?那就是你的浏览器已经开始下载E盘music_eg目录下的某一个文件啦(前提是E盘中存在music_eg目录,当然里面还得有文件,本例仅作为测试),如下图所示:

  我们再去查看E盘music_eg目录,如下:

  So, 用Spring Boot实现文件下载功能搞定!欢迎大家交流哦~

注意:本人现已开通两个微信公众号: 因为Python(微信号为:python_math)以及轻松学会Python爬虫(微信号为:easy_web_scrape), 欢迎大家关注哦~~

Spring Boot入门(11)实现文件下载功能相关推荐

  1. Spring Boot入门系列(十六)整合pagehelper,一秒实现分页功能!

    之前讲了Springboot整合Mybatis,然后介绍了如何自动生成pojo实体类.mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能.接下来要说一说Mybatis 的分页 ...

  2. Spring Boot 入门

    一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...

  3. Spring Boot 入门与实战笔记

    **一.**Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 20 ...

  4. Spring Boot 入门之缓存和 NoSQL 篇(四)

    原文地址:Spring Boot 入门之缓存和 NoSQL 篇(四) 博客地址:http://www.extlight.com 一.前言 当系统的访问量增大时,相应的数据库的性能就逐渐下降.但是,大多 ...

  5. 动力节点郭鑫Spring Boot入门学习笔记,收藏起来慢慢看

    做 Java 开发的,没有人敢小觑 Spring Boot 的重要性,现在出去面试,无论多小的公司 or 项目,都要跟你扯一扯 Spring Boot,扯一扯微服务,如果啃不下来,很可能就与大厂失之交 ...

  6. Spring Boot 入门笔记

    一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...

  7. 史上最全,Spring Boot入门篇总结,收藏起来慢慢看

    Spring Boot是Spring家族下的一个全新开发框架,其设计目的主要是用来简化Spring应用的创建及开发过程,它提供了自动配置,starter依赖等特性,从而使开发人员从大量的XML配置中解 ...

  8. Spring Boot 入门——Spring Boot 简介||微服务简介

    Spring Boot 入门 1.Spring Boot 简介 Spring Boot来简化Spring应用开发,约定大于配置, 去繁从简,just run就能创建一个独立的,产品级别的应用 简化Sp ...

  9. springboot 创建地址_这可能是史上最易懂的 Spring Boot 入门教程

    目录 一.Spring Boot 是什么 二.为什么要使用 Spring Boot 三.快速入门 3.1 创建 Spring Boot 项目 3.2 项目结构 3.3 引入 Web 依赖 3.4 编写 ...

  10. boot jersey_Jersey和Spring Boot入门

    boot jersey 除了许多新功能,Spring Boot 1.2还带来了Jersey支持. 这是吸引喜欢标准方法的开发人员的重要一步,因为他们现在可以使用JAX-RS规范构建RESTful AP ...

最新文章

  1. [译]React Component最佳实践
  2. 2020-11-22(树,森林和二叉树转换)
  3. java.lang.ExceptionInInitializerError的原因
  4. 为什么火狐浏览器中点击按钮失效_各种浏览器审查、监听http头工具介绍
  5. 第一次给知名项目贡献代码,有点紧张
  6. ar9285网卡驱动 for linux,atheros ar9285无线网卡驱动 免费版
  7. RS485通讯常见问题汇总
  8. 网页设计 颜色搭配
  9. C语言大写字母转小写字母
  10. MonoRail学习笔记二:框架代码下载
  11. C++算法与设计学习记录
  12. “14寸手机”,华为葫芦里到底卖的什么药?
  13. 不懂优雅停机,搞挂了线上服务该咋办?
  14. 2.13黑马培训日记
  15. 北海道看雪(攻略及摄影)
  16. 地图JSON数据下载
  17. 【redis前传】集思广益之quicklist,取其精华去其糟粕
  18. pcm5102a解码芯片音质评测_漫步者LolliPods无线蓝牙耳机音质超越价格
  19. Openwrt 官方镜像下载安装
  20. 广告投放实战指南,让你的技术产品走向成功!

热门文章

  1. 全球及中国箱包市场需求前景与投资动态分析报告2022版
  2. lazadashopee代运营服务有哪些,能帮商家解决哪些问题?
  3. 为何要离开?该怎么离开?今天来谈谈辞职
  4. Chrome插件开发之一: 搭建基本结构
  5. mysql 安装 安全错误_MySQL的安全问题从安装开始说起
  6. 强迫症犯了,忍不住赞一下slf4j包Logger.java的优雅代码
  7. 【BZOJ2558】Count on a tree
  8. 连接MYSQL的时候报错(找不到请求的.net framework data provider。可能没有安装
  9. JTree用法及JTree使用经验总结转
  10. 实现跨域cookie共享(转载)