ZBLOG

springboot mongodb 上传 文件 示例

以下是一个基于SpringBoot和MongoDB的文件上传示例:

  1. 添加依赖

在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>
  1. 配置MongoDB连接信息

在application.properties文件中配置MongoDB连接信息:

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=mydatabase
  1. 创建实体类

创建一个名为File的实体类,用于存储文件相关信息:

@Document(collection = "file")
public class File {

    @Id
    private String id;

    private String fileName;

    private String fileType;

    private byte[] fileData;

    // getter and setter methods
}
  1. 创建控制器

创建一个名为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);
        }
    }
}
  1. 测试上传和下载功能

使用Postman或其他HTTP客户端进行文件上传和下载测试:

  • 上传文件:发送一个POST请求到/files/路径,选择一个文件并附加到请求中。
  • 下载文件:发送一个GET请求到/files/{id}路径,将URL中的{id}值替换为要下载的文件ID。

以上就是基于SpringBoot和MongoDB实现文件上传和下载的示例。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=1723

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?