以下是一个基于SpringBoot和MongoDB的文件上传示例:
- 添加依赖
在pom.xml文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>${mongo.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>${spring-data-mongodb.version}</version>
</dependency>
- 配置MongoDB连接信息
在application.properties文件中配置MongoDB连接信息:
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=mydatabase
- 创建实体类
创建一个名为File的实体类,用于存储文件相关信息:
@Document(collection = "file")
public class File {
@Id
private String id;
private String fileName;
private String fileType;
private byte[] fileData;
// getter and setter methods
}
- 创建控制器
创建一个名为FileController的控制器,用于处理文件上传和下载请求:
@RestController
@RequestMapping("/files")
public class FileController {
@Autowired
private MongoTemplate mongoTemplate;
@PostMapping("/")
public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
File dbFile = new File();
dbFile.setFileName(file.getOriginalFilename());
dbFile.setFileType(file.getContentType());
dbFile.setFileData(file.getBytes());
mongoTemplate.save(dbFile);
return "File uploaded successfully!";
}
@GetMapping("/{id}")
public ResponseEntity<byte[]> downloadFile(@PathVariable String id) {
File dbFile = mongoTemplate.findById(id, File.class);
if (dbFile != null) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType(dbFile.getFileType()));
headers.setContentDisposition(ContentDisposition.builder("attachment").filename(dbFile.getFileName()).build());
return new ResponseEntity<>(dbFile.getFileData(), headers, HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
}
- 测试上传和下载功能
使用Postman或其他HTTP客户端进行文件上传和下载测试:
- 上传文件:发送一个POST请求到/files/路径,选择一个文件并附加到请求中。
- 下载文件:发送一个GET请求到/files/{id}路径,将URL中的{id}值替换为要下载的文件ID。
以上就是基于SpringBoot和MongoDB实现文件上传和下载的示例。