GridFsTemplate MongoDBファイルの読み込み
2257 ワード
転載先:https://www.codeleading.com/article/465773507/
GridFSは、MongoDBが提供するストレージファイルを永続化するためのモジュールです.
GridFSはファイルをブロックして格納し、ファイルは256 KBの大きさで複数のブロックに分割して格納する.GridFSストレージファイルには2つのcollectionが使用されています.1つはchunksで、ブロックファイルのバイナリデータを格納します.1つはfilesで、ファイル情報(ファイル名などの情報)を格納するために使用されます.
ストレージファイルテストを作成します.ここでストレージファイルidを返します.このファイルidはfilesセットのプライマリキーです.ファイルidでchunksテーブルのレコードをクエリーし、ファイルの内容を得ることができます.
ファイルの読み込み:
mongodb bucketの構成
読み取りファイルのテスト
について述べる
GridFSは、MongoDBが提供するストレージファイルを永続化するためのモジュールです.
GridFSはファイルをブロックして格納し、ファイルは256 KBの大きさで複数のブロックに分割して格納する.GridFSストレージファイルには2つのcollectionが使用されています.1つはchunksで、ブロックファイルのバイナリデータを格納します.1つはfilesで、ファイル情報(ファイル名などの情報)を格納するために使用されます.
ソリューション
ストレージファイルテストを作成します.ここでストレージファイルidを返します.このファイルidはfilesセットのプライマリキーです.ファイルidでchunksテーブルのレコードをクエリーし、ファイルの内容を得ることができます.
import org.bson.types.ObjectId;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.gridfs.GridFsTemplate;
import org.springframework.test.context.junit4.SpringRunner;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@SpringBootTest
@RunWith(SpringRunner.class)
public class GridFsTest {
@Autowired
private GridFsTemplate gridFsTemplate;
@Test
public void saveTest() throws FileNotFoundException {
File file = new File("******");
FileInputStream fis = new FileInputStream(file);
ObjectId objectId = gridFsTemplate.store(fis, "***");
// id
System.out.println(objectId.toString());
}
}
ファイルの読み込み:
mongodb bucketの構成
@Configuration
public class MongoDBConfig {
@Value("${spring.data.mongodb.database}")
private String db;
@Bean
public GridFSBucket getGridFSBucket(MongoClient mongoClient){
// mongodb
MongoDatabase database = mongoClient.getDatabase(db);
// bucket
return GridFSBuckets.create(database);
}
}
読み取りファイルのテスト
@Test
public void getTest() throws IOException {
// id
GridFSFile gridFSFile = gridFsTemplate.findOne(Query.query(Criteria.where("_id").is("******")));
//
GridFSDownloadStream downloadStream = gridFSBucket.openDownloadStream(gridFSFile.getObjectId());
//
GridFsResource gridFsResource = new GridFsResource(gridFSFile, downloadStream);
//
InputStream inputStream = gridFsResource.getInputStream();
}