1 pom配置
pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> <!-- <version>2.6.10</version>--> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.12.5</version> </dependency>
2 application.yml
data: mongodb: host: 10.233.32.224 port: 27017 database: test username: test password: ft@135246
3
package com.sf.gis.common.utils; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import com.mongodb.client.gridfs.GridFSBucket; import com.mongodb.client.gridfs.GridFSDownloadStream; import com.mongodb.client.gridfs.model.GridFSFile; import com.sf.gis.common.exceprtion.BusinessException; import com.sf.gis.common.result.JsonResponse; import io.swagger.v3.oas.annotations.Operation; import org.apache.commons.compress.utils.IOUtils; import org.bson.types.ObjectId; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; /** * Mongodb操作工具类 */ @RestController @RequestMapping("/file") public class FileMongoDBUtil { @Autowired private GridFSBucket gridFSBucket; @PostMapping("/uploadfile") @Operation(summary="上传文件") public JsonResponse uploadFile1(@RequestPart("file") MultipartFile file) throws IOException { InputStream inputStream = null; String id=""; try { DBObject metaData = new BasicDBObject(); metaData.put("type", file.getContentType()); long size = file.getSize(); //1 200 兆字节=209715200 字节 1long=4个字节 if (size>52428800){ throw new BusinessException("单次上传不能超过200M"); } metaData.put("size", file.getSize()); inputStream = file.getInputStream(); ObjectId objectId = gridFSBucket.uploadFromStream(file.getOriginalFilename(), inputStream); id= objectId.toHexString(); } catch (IOException e) { e.printStackTrace(); }finally { if (inputStream!=null){ try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } return JsonResponse.ok(Boolean.TRUE,id); } @GetMapping("/download") @Operation(summary="文件下载") public void downloadFile(@RequestParam("id") String id, HttpServletResponse response) throws IOException { GridFSDownloadStream gridFSDownloadStream = gridFSBucket.openDownloadStream(new ObjectId(id)); GridFSFile gridFSFile = gridFSDownloadStream.getGridFSFile(); // 设置响应头 response.setContentType(String.valueOf(gridFSFile.getMetadata())); response.setHeader("Content-Disposition", "attachment; filename=" + gridFSFile.getFilename()); response.setHeader("Cache-Control", "private,no-cache,no-store"); IOUtils.copy(gridFSDownloadStream, response.getOutputStream()); } }