首页 > 其他分享 >Spring Boot:文件下载

Spring Boot:文件下载

时间:2022-11-09 20:36:36浏览次数:42  
标签:文件 Spring boot springframework Boot org os 下载


测试代码

​pom.xml​​:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.2</version>
</parent>

<packaging>jar</packaging>

<groupId>com.kaven</groupId>
<artifactId>springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>

<name>springboot</name>
<description>springboot</description>

<properties>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

文件下载接口:

package com.kaven.springboot.controller;

import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.io.*;

@RestController
public class FilesController {

@GetMapping("/download/{path}")
public void download(@PathVariable("path") String path ,
HttpServletResponse response){
// 将需要下载的文件对应到服务器的本地文件路径
// 一般会使用云存储服务器来存储文件,然后数据库中保存云存储服务器中文件的路径
File file = new File("C:\\Users\\Kaven\\Desktop\\images\\" + path);
// 缓冲字节数组
byte[] buffer = new byte[1024];
BufferedInputStream bis = null;
OutputStream os = null;
try {
// 文件是否存在
if (file.exists()) {
// 设置响应
response.setContentType("application/octet-stream;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
// 获取响应的输出流
os = response.getOutputStream();
// 获取文件的输入流
bis = new BufferedInputStream(new FileInputStream(file));
// 不断将文件输入流中的字节读取到缓冲字节数组中,直到文件读取完
while(bis.read(buffer) != -1){
// 将缓冲字节数组中的字节写入响应的输出流
os.write(buffer);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 关闭资源
if(bis != null) {
bis.close();
}
if(os != null) {
os.flush();
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

启动类:

package com.kaven.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootApplication {

public static void main(String[] args) {
SpringApplication application = new SpringApplication(SpringbootApplication.class);
application.run(args);
}
}

使用浏览器进行测试,下载的文件在服务器上存在,如下图所示。

Spring Boot:文件下载_spring boot


访问​​http://localhost:8080/download/1.jpg​​,会弹出如下图所示的弹框。

Spring Boot:文件下载_java_02


图片文件成功下载到指定位置。

Spring Boot:文件下载_xml_03


访问​​http://localhost:8080/download/americanlie_testdetection.avi​​下载视频(博主的电脑默认会使用下载器进行下载)。

Spring Boot:文件下载_spring_04


Spring Boot:文件下载_java_05


视频文件是完整的,可以播放。

Spring Boot:文件下载_spring boot_06

使用​​Spring Boot​​提供文件下载功能就介绍到这里,如果博主有说错的地方或者大家有不同的见解,欢迎大家评论补充。


标签:文件,Spring,boot,springframework,Boot,org,os,下载
From: https://blog.51cto.com/u_15870611/5838728

相关文章

  • SpringBoot 01: JavaConfig + @ImportResource + @PropertyResource
    springboot的前置知识:通过注解创建对象和读取配置文件1.JavaConfig设计思想使用java类作为xml配置文件的替代,是配置spring容器的纯java的方式可以创建java对象并把......
  • SpringCloud(八) - 自定义token令牌,鉴权(注解+拦截器),参数解析(注解+解析器)
    1、项目结构介绍项目有使用到,redis和swagger,不在具体介绍;2、手动鉴权和用户信息参数获取(繁杂,冗余)2.1用户实体类/***CreatedOn:4/11/2022.*<p>*Author......
  • SpringMVC概述
    1.SpringMVC是一种基于Java实现MVC模型的轻量级Web框架优点:使用简单,开发便捷(相比于Servlet)灵活性强2.SpringMVC是一种表现层框架技术,用于进行表现层功能开发3. Java......
  • SpringCloud(七) - 微信支付
    1、开发文档微信开发文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1安全规范:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_31、......
  • Spring Cloud Alibaba:Gateway之路由过滤器工厂(三)
    前两篇博客已经介绍了十一种路由过滤器工厂:​​SpringCloudAlibaba:Gateway之路由过滤器工厂(一)​​​​SpringCloudAlibaba:Gateway之路由过滤器工厂(二)​​随着​​Gatewa......
  • Spring Boot:自定义SpringApplication
    自定义SpringApplication如果​​SpringApplication​​​的默认值不满足我们的需求,可以创建​​SpringApplication​​实例并对其进行自定义设置,例如,要关闭横幅:packagecom......
  • Spring Boot:热部署
    配置IDEA勾选​​Buildprojectautomatically​​选项。搜索​​Registry​​​(双击​​Shift​​​键),找到并勾选​​compiler.automake.allow.when.app.running​​选项。......
  • Spring Boot:替换Web服务器
    ​​SpringBoot​​​应用包含默认的嵌入式​​Web​​容器。对于​​servlet​​​应用,​​spring-boot-starter-web​​​通过依赖​​spring-boot-starter-tomcat​​​......
  • Spring Boot:HTTP端口
    在​​SpringBoot​​​应用程序中,​​HTTP​​​端口默认为​​8080​​。可以通过​​server.port​​​属性来设置,往配置文件​​application.properties​​中添加以......
  • springBoot实现全局跨域
    importlombok.extern.slf4j.Slf4j;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.s......