以下是一个简单的 Spring Boot 后端代码示例,用于在局域网中共享文件。
- 首先,我们需要定义一个 RESTful API 接口来处理文件上传和下载请求。在这个例子中,我们将使用 POST 请求上传文件,并且使用 GET 请求下载文件。
@RestController @RequestMapping(“/api/files”) public class FileController {
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
// 处理文件上传请求
}
@GetMapping("/{filename:.+}")
public ResponseEntity<Resource> handleFileDownload(@PathVariable String filename) {
// 处理文件下载请求
}
}
- 在处理文件上传请求时,我们可以使用 Spring 的 MultipartFile 类来接收客户端上传的文件,并将其保存到服务器上的指定目录中。
@PostMapping(“/upload”) public String handleFileUpload(@RequestParam(“file”) MultipartFile file) {
try {
// 将文件保存到指定目录下
Files.copy(file.getInputStream(), Paths.get("path/to/save/directory", file.getOriginalFilename()));
return "File uploaded successfully!";
} catch (IOException e) {
return "Failed to upload file: " + e.getMessage();
}
}
- 对于处理文件下载请求,我们可以使用 Spring 的 Resource 类来读取服务器上的指定路径下的文件,并将其作为响应返回给客户端。
@GetMapping(“/{filename:.+}”)
public ResponseEntity
Resource resource = new FileSystemResource(Paths.get("path/to/save/directory", filename));
if (!resource.exists()) {
return ResponseEntity.notFound().build();
}
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"");
return ResponseEntity.ok()
.headers(headers)
.contentLength(resource.contentLength())
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
}
- 最后,我们需要在应用程序的入口类中添加一些必要的配置,例如允许跨域访问、上传文件大小限制等。
@SpringBootApplication public class FileSharingApplication {
public static void main(String[] args) {
SpringApplication.run(FileSharingApplication.class, args);
}
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("*")
.allowedMethods("GET", "POST")
.allowedHeaders("*");
}
};
}
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setMaxUploadSize(1024 * 1024 * 50); // 设置最大上传文件大小为50MB
return resolver;
}
}
这就是一个简单的 Spring Boot 后端代码示例,用于在局域网中共享文件。当然,如果你想要实现更多功能,比如文件夹管理、权限控制等,还需要进行更多的开发和改进。