很简单 分三部
查看官方文档 按官方文档导入包即可 https://docs.mongodb.com/drivers/java/sync/v4.3/quick-start/
遇到的错误
启动自动抛出 java.lang.ClassNotFoundException: com.mongodb.connection.BufferProvider
错误原因: 导入的包不对 一定要根据官方文档导包 视频教程有误
编写配置配置文件
uri格式mongodb://username:password@ip:port
没有什么好说的 类似mysql 配置uri和数据库即可
data:
mongodb:
uri: mongodb://lyra:365373011@127.0.0.1:27017
database: news
编写配置类
主体思路:
GridFSBucket
对象遇到的错误
使用@value注入字符串时未加$符号 未注入成功
@Configuration
public class GridFSConfig {
@Value("${spring.data.mongodb.database}")
private String databaseName;
@Bean
public GridFSBucket gridFSBucket(MongoClient mongoClient) {
MongoDatabase mongoDatabase = mongoClient.getDatabase(databaseName);
return GridFSBuckets.create(mongoDatabase);
}
}
业务逻辑:
因为 JDK从1.8升级到9.0.1后sun.misc.BASE64Decoder和sun.misc.BASE64Encoder不可用 所以得使用Base64.Decoder decoder = Base64.getDecoder();
获取解码对象
然后根据byte数组进行构建inputStream对象
if (adminBO.getImg64() == null) {
GraceException.display(ResponseStatusEnum.UPLOAD_IMAGE_BASE64_ISNULL);
}
Base64.Decoder decoder = Base64.getDecoder();
byte[] imageBytes = decoder.decode(adminBO.getImg64());
InputStream inputStream = new ByteArrayInputStream(imageBytes);
根据inputSteam和用户名进行上传文件操作
ObjectId objectId = gridFSBucket.uploadFromStream(adminBO.getUsername() + ".png", inputStream);
最后返回没什么好说的
@Override
public GraceJSONResult uploadToGridFS(AdminBO adminBO) {
if (adminBO.getImg64() == null) {
GraceException.display(ResponseStatusEnum.UPLOAD_IMAGE_BASE64_ISNULL);
}
Base64.Decoder decoder = Base64.getDecoder();
byte[] imageBytes = decoder.decode(adminBO.getImg64());
InputStream inputStream = new ByteArrayInputStream(imageBytes);
ObjectId objectId = gridFSBucket.uploadFromStream(adminBO.getUsername() + ".png", inputStream);
return GraceJSONResult.ok(objectId.toString());
}
原文:https://www.cnblogs.com/lyraHeartstrings/p/15194152.html