首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Boot:文件下载在项目根文件夹中创建一个新文件

Spring Boot是一个用于构建独立的、生产级的Java应用程序的开源框架。它简化了Java应用程序的开发过程,提供了快速开发和部署的能力。

文件下载是Web应用程序中常见的功能之一。在Spring Boot中,可以通过以下步骤在项目根文件夹中创建一个新文件并实现文件下载功能:

  1. 首先,确保在项目的依赖管理中添加了Spring Boot Web Starter依赖。可以在项目的pom.xml文件中添加以下依赖项:
代码语言:txt
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
  1. 创建一个Controller类,用于处理文件下载请求。可以使用@RestController注解标记该类,并使用@GetMapping注解标记下载请求的URL路径。在方法中,可以使用ResponseEntity类来构建响应对象,并设置文件的内容、HTTP头信息和状态码。
代码语言:txt
复制
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;
import java.net.MalformedURLException;
import java.nio.file.Path;
import java.nio.file.Paths;

@RestController
public class FileDownloadController {

    @GetMapping("/download/{fileName}")
    public ResponseEntity<Resource> downloadFile(@PathVariable String fileName) {
        // 构建文件路径
        Path filePath = Paths.get("./" + fileName).normalize();
        try {
            // 加载文件资源
            Resource resource = new UrlResource(filePath.toUri());
            if (resource.exists()) {
                // 设置响应头信息
                HttpHeaders headers = new HttpHeaders();
                headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + resource.getFilename());
                headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
                // 构建响应对象
                return ResponseEntity.ok()
                        .headers(headers)
                        .body(resource);
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 文件不存在时返回404错误
        return ResponseEntity.notFound().build();
    }
}
  1. 运行Spring Boot应用程序,并发送GET请求到/download/{fileName}路径,其中{fileName}是要下载的文件名。服务器将返回文件的内容,并将其作为附件下载。

这是一个简单的文件下载示例,可以根据实际需求进行扩展和优化。在实际应用中,可以使用腾讯云的对象存储服务(COS)来存储和管理文件,并使用腾讯云的CDN加速服务提供更快的下载速度和更好的用户体验。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Visual Studio 2017各版本安装包离线下载、安装全解析

微软最近发布了正式版Visual Studio 2017并公开了其下载方式,不过由于VS2017采用了新的模块化安装方案,所以微软官方并未提供ISO镜像,但是官方提供了如何进行离线下载的方案给需要进行离线安装的用户,只不过都是英文。本文将对官方指南中的一部分进行翻译(这里说一句:翻译的部分就是最基础的离线下载和安装方案,另外,即使如以前微软提供了安装镜像,也仅会包含Visual Studio的基本核心组件和部分官方扩展,而微软、安卓和苹果等平台的SDK、模拟器和第三方扩展功能等会在用户选择后联网下载。而VS2017的离线包是包含所有可选项的)。好了,接下来将会分为四部分来叙述,分别是离线下载安装文件、离线安装VS2017、更新离线文件包以及如何通过已下载版本来减少下载其它版本下载量的方法。

01

.net mvc + layui做图片上传(二)—— 使用流上传和下载图片

摘要:上篇文章写到一种上传图片的方法,其中提到那种方法的局限性,就是上传的文件只能保存在本项目目录下,在其他目录中访问不到该文件。这与浏览器的安全性机制有关,浏览器不允许用户用任意的路径访问服务器上的资源,因为这可能造成服务器上其他位置的信息被泄露。浏览器只允许用户用相对路径直接访问本项目路径下的资源。那么,如果A项目要访问B项目上传的文件资源,这就产生问题了。所以这就需要另外一种方法来解决这个问题,那就是通过 流(Stream)的形式上传和下载文件资源。这种方法因为不是通过路径直接访问文件,而是先把文件读取的流中,然后将流中的数据写入到新的文件中,还原需要上传的文件,所以也就不存在上面的问题了。本片博客,着重介绍一下这种方式的实现。

03
领券