发布时间:2025-06-24 18:09:55  作者:北方职教升学中心  阅读量:751


文本文件等。

5.2 文件下载

你可以通过以下URL下载文件:

GET http://localhost:8080/files/download/{fileName}

其中{fileName}是文件的名称。

4. 创建上传目录

确保在你的系统上已经创建了配置文件中指定的上传目录,比如C:/uploads。下载和预览。

8. 文件删除功能(可选)

你也可以添加一个删除文件的接口,来删除已上传的文件:

// 文件删除@DeleteMapping("/delete/{fileName}")@ResponseBodypublic String deleteFile(@PathVariable String fileName) throws IOException {    Path filePath = Paths.get(fileUploadDir).resolve(fileName).normalize();    Files.deleteIfExists(filePath);    return "File deleted successfully";}
cURL或者前端页面来测试文件上传功能。上传文件的URL为:

POST http://localhost:8080/files/upload

参数名称为file。如果没有创建,可以通过代码在项目启动时自动创建:

import org.springframework.boot.CommandLineRunner;import org.springframework.stereotype.Component;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;@Componentpublic class FileUploadDirectoryInitializer implements CommandLineRunner {    @Value("${file.upload-dir}")    private String fileUploadDir;    @Override    public void run(String... args) throws Exception {        Path uploadPath = Paths.get(fileUploadDir);        if (!Files.exists(uploadPath)) {            Files.createDirectories(uploadPath);        }    }}

5. 测试上传、下载和预览

5.1 文件上传

你可以使用Postman、PDF等可以直接在浏览器中显示的文件) @GetMapping("/preview/{fileName}") public ResponseEntity<Resource> previewFile(@PathVariable String fileName) throws MalformedURLException { Path filePath = Paths.get(fileUploadDir).resolve(fileName).normalize(); Resource resource = new UrlResource(filePath.toUri()); if (!resource.exists()) { return ResponseEntity.notFound().build(); } String contentType = "application/octet-stream"; try { contentType = Files.probeContentType(filePath); } catch (IOException e) { e.printStackTrace(); } return ResponseEntity.ok() .contentType(MediaType.parseMediaType(contentType)) .body(resource); }}

3. 配置文件上传目录

application.propertiesapplication.yml中配置文件的上传路径:

file.upload-dir=C:/uploads

或者使用application.yml

file:  upload-dir: C:/uploads

你可以将路径配置为你项目的目录,也可以指定到服务器的某个位置。PDF、

5.3 文件预览

你可以通过以下URL预览文件(如图片或PDF):

GET http://localhost:8080/files/preview/{fileName}

6. 处理大文件上传

对于大文件上传,Spring Boot默认的最大上传文件大小可能不满足需求,可以通过以下配置进行调整:

spring.servlet.multipart.max-file-size=100MBspring.servlet.multipart.max-request-size=100MB

或者在application.yml中:

spring:  servlet:    multipart:      max-file-size: 100MB      max-request-size: 100MB

7. 文件预览类型支持

通常情况下,浏览器支持预览的文件类型包括图片(如jpeg

在Spring Boot项目中实现文件的上传、下载和预览的Controller

你可以创建一个FileController来处理文件的上传、

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

2. 创建文件上传、

import org.springframework.beans.factory.annotation.Value;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.stereotype.Controller;import org.springframework.web.bind.annotation.*;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.servlet.support.ServletUriComponentsBuilder;import java.io.IOException;import java.net.MalformedURLException;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.nio.file.StandardCopyOption;@Controller@RequestMapping("/files")public class FileController {    // 文件保存路径(可以通过配置文件进行配置)    @Value("${file.upload-dir}")    private String fileUploadDir;    // 文件上传    @PostMapping("/upload")    @ResponseBody    public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException {        // 获取文件名并且保存文件        String fileName = file.getOriginalFilename();        Path targetLocation = Paths.get(fileUploadDir).resolve(fileName);        Files.copy(file.getInputStream(), targetLocation, StandardCopyOption.REPLACE_EXISTING);        // 返回文件下载的URL        String fileDownloadUri = ServletUriComponentsBuilder.fromCurrentContextPath()                .path("/files/download/")                .path(fileName)                .toUriString();        return "File uploaded successfully: " + fileDownloadUri;    }    // 文件下载    @GetMapping("/download/{fileName}")    public ResponseEntity<Resource> downloadFile(@PathVariable String fileName) throws MalformedURLException {        Path filePath = Paths.get(fileUploadDir).resolve(fileName).normalize();        Resource resource = new UrlResource(filePath.toUri());        if (!resource.exists()) {            return ResponseEntity.notFound().build();        }        return ResponseEntity.ok()                .contentType(MediaType.APPLICATION_OCTET_STREAM)                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")                .body(resource);    }    // 文件预览(主要针对图片、png)、下载和预览功能,可以通过使用Spring MVC的MultipartFile接口来处理文件上传,并使用HttpServletResponseResource来实现文件下载和预览。

1. 引入依赖

确保在pom.xml中引入了Spring Boot的相关依赖。通常情况下,Spring Boot Starter Web已经包含了必要的依赖。下面是如何实现这些功能的完整示例。如果文件类型不被浏览器支持,通常可以通过文件下载的方式处理。