Spring Boot是一个用于构建独立的、生产级的Java应用程序的开源框架。它简化了Java应用程序的开发过程,提供了快速开发和部署的能力。
文件下载是Web应用程序中常见的功能之一。在Spring Boot中,可以通过以下步骤在项目根文件夹中创建一个新文件并实现文件下载功能:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
@RestController
注解标记该类,并使用@GetMapping
注解标记下载请求的URL路径。在方法中,可以使用ResponseEntity
类来构建响应对象,并设置文件的内容、HTTP头信息和状态码。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();
}
}
/download/{fileName}
路径,其中{fileName}
是要下载的文件名。服务器将返回文件的内容,并将其作为附件下载。这是一个简单的文件下载示例,可以根据实际需求进行扩展和优化。在实际应用中,可以使用腾讯云的对象存储服务(COS)来存储和管理文件,并使用腾讯云的CDN加速服务提供更快的下载速度和更好的用户体验。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云