Spring Boot实现文件上传下载

在Spring Boot中,实现文件上传和下载非常简单。我们将分别介绍如何使用Spring Boot处理文件上传和文件下载。

  1. 文件上传

首先,我们需要在pom.xml文件中添加以下依赖:

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

接下来,创建一个简单的HTML表单,用于文件上传:

<!DOCTYPE html><html><head> <title>File Upload</title></head><body> <h1>Upload a file</h1> <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <button type="submit">Upload</button> </form></body></html>

现在,我们将在Controller中处理文件上传请求:

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths; @RestControllerpublic class FileUploadController { private static final String UPLOAD_DIR = "uploads/"; @PostMapping("/upload") public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) { if (file.isEmpty()) { return new ResponseEntity<>("Please select a file to upload.", HttpStatus.BAD_REQUEST);
        } try { byte[] bytes = file.getBytes(); Path path = Paths.get(UPLOAD_DIR + file.getOriginalFilename());
            Files.write(path, bytes); return new ResponseEntity<>("File uploaded successfully: " + file.getOriginalFilename(), HttpStatus.OK);
        } catch (IOException e) {
            e.printStackTrace(); return new ResponseEntity<>("Failed to upload file: " + file.getOriginalFilename(), HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }
}

这将创建一个名为"uploads"的文件夹,用于存储上传的文件。

  1. 文件下载

为了实现文件下载,我们将在Controller中添加一个新的方法:

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths; @RestControllerpublic class FileDownloadController { private static final String UPLOAD_DIR = "uploads/"; @GetMapping("/download/{filename}") public ResponseEntity<Resource> downloadFile(@PathVariable String filename) { Path path = Paths.get(UPLOAD_DIR + filename); Resource resource = null; try { byte[] bytes = Files.readAllBytes(path);
            resource = new ByteArrayResource(bytes);
        } catch (IOException e) {
            e.printStackTrace(); return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        } return ResponseEntity.ok()
                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
                .body(resource);
    }
}

现在,您可以通过访问/download/{filename}端点来下载文件,其中{filename}是要下载的文件名。

这就是在Spring Boot中实现文件上传和下载的方法。请确保在application.properties或application.yml中设置正确的文件上传目录。例如,在application.properties中添加以下配置:

file.upload-dir=uploads/
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo6@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram