Mongodb Spring GridFsOperations API,用于使用自定义前缀存储在mongo中
我正在使用spring data for mongodb的GridFsOperations API将大文件分块存储在数据库中。这是我的密码:Mongodb Spring GridFsOperations API,用于使用自定义前缀存储在mongo中,mongodb,spring-data,gridfs,Mongodb,Spring Data,Gridfs,我正在使用spring data for mongodb的GridFsOperations API将大文件分块存储在数据库中。这是我的密码: @Autowired private GridFsOperations gridOperation; public String save(InputStream inputStream, String contentType, String filename) { ... GridFSFile file = gridOperation.stor
@Autowired
private GridFsOperations gridOperation;
public String save(InputStream inputStream, String contentType, String filename) {
...
GridFSFile file = gridOperation.store(inputStream, filename, metaData);
return file.getId().toString();
}
代码工作正常,但它总是将文件存储在以前缀“fs”开头的集合中,这是mongodb中的默认值。有没有一种方法可以指定不同的前缀,以便我可以为不同类型的文件存储不同的文件和块
编辑:补充问题
如何指定块大小?对于不同类型的文件,是否建议使用不同的块大小,例如-2 mb用于图像文件,10 mb用于视频文件?我使用GridFS和GridFSInputFile类而不是GridFSTemplate或GridFSOperations解决了这两个问题(在代码中配置块大小并使用不同的前缀) 我仍然想知道是否建议使用不同的块大小 对于任何想知道的人,以下是代码片段:
@Autowired
private MongoDbFactory dbFactory;
public String save(InputStream inputStream, String contentType, String filename, String username, String bucket) {
DBObject metaData = ....(create metadata here)
GridFS gridFS = new GridFS(dbFactory.getDb(), bucket);
GridFSInputFile gridFSInputFile = gridFS.createFile(inputStream);
gridFSInputFile.setMetaData(metaData);
if(bucket.equals("photo")){
gridFSInputFile.setChunkSize(1024000); //1 mb
} else if(bucket.equals("mp3")){
gridFSInputFile.setChunkSize(10240000); //10 mb
}
try {
gridFSInputFile.saveChunks();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
gridFSInputFile.save();
return gridFSInputFile.getId().toString();
}
好的,我发现了如何直接使用GridFSTemplate而不是GridFSOperations来使用其他前缀,这似乎还在开发中。现在,我只想知道如何修复块大小,以及在mongo中强制使用特定大小是否有好处。如果Spring数据增强了它的GridFS API,以支持在存储文档时选择存储桶,那就太好了。