【MongoDB】GridFS入門
11283 ワード
一、紹介
GridFSはMongoDBが提供するストレージファイルを永続化するためのモジュールであり、CMSはMongoDBを使用してデータを格納し、GridFSを使用して迅速に統合開発することができる.その動作原理は、GridFSでファイルをブロック化して格納し、ファイルは256 KBのサイズで複数のブロックに分割して格納し、GridFSは2つのセット(collection)を使用してファイルを格納し、1つのセットはchunksで、ファイルのバイナリデータを格納する.1つのセットはfilesであり、ファイルのメタデータ情報(ファイル名、ブロックサイズ、アップロード時間などの情報)を格納するために使用される.GridFSからファイルを読み込むには、ファイルの各ブロックを組み立て、マージします.詳細:https://docs.mongodb.com/manual/core/gridfs/
二、実例
1、GridFSアクセスファイルテスト
1、ファイルを保存する
GridFsTemplateを使用してファイルテストコードを格納:GridFsTemplateをテストプログラムに注入します.@SpringBootTest
@RunWith(SpringRunner.class)
public class GridFsTest {
@Autowired
GridFsTemplate gridFsTemplate;
/**
*
*/
@Test
public void testGridFsSaveFile() throws FileNotFoundException {
//
File file = new File("e:/index_banner.ftl");
//
FileInputStream inputStram = new FileInputStream(file);
// GridFS
ObjectId objectId = gridFsTemplate.store(inputStram, " 01", "");
// ID
String fileId = objectId.toString();
System.out.println(file);
}
}
記憶原理説明:ファイル記憶に成功して1つのファイルidを得たこのファイルidはfsである.filesコレクションのプライマリ・キー.ファイルidでfsを問い合わせることができる.chunksテーブルのレコードを取得し、ファイルの内容を取得します.
2、ファイルの読み込み
1)configパッケージでMongodbの構成クラスを定義します.GridFSBucketはダウンロードストリームオブジェクトを開くために使用します./**
* @author
* @desc Mongodb
* @email [email protected]
* @create 2019/07/17 21:53
**/
@Configuration
public class MongoConfig {
@Value("${spring.data.mongodb.database}")
String db;
/**
* GridFSBucket
* @param mongoClient
* @return
*/
@Bean
public GridFSBucket getGridFSBucket(MongoClient mongoClient) {
MongoDatabase database = mongoClient.getDatabase(db);
GridFSBucket bucket = GridFSBuckets.create(database);
return bucket;
}
}
テストコード:@SpringBootTest
@RunWith(SpringRunner.class)
public class GridFsTest {
@Autowired
GridFsTemplate gridFsTemplate;
@Autowired
GridFSBucket gridFSBucket;
/**
*
* @throws IOException
*/
@Test
public void queryFile() throws IOException {
String fileId = "5d2f261dd8d5cf41c0465db3";
// id
GridFSFile gridFSFile = gridFsTemplate.findOne(Query.query(Criteria.where("_id").is(fileId)));
//
GridFSDownloadStream gridFSDownloadStream = gridFSBucket.openDownloadStream(gridFSFile.getObjectId());
// gridFsResource,
GridFsResource gridFsResource = new GridFsResource(gridFSFile, gridFSDownloadStream);
//
String s = IOUtils.toString(gridFsResource.getInputStream(), "utf-8");
System.out.println(s);
}
}
3、ファイルの削除 /**
*
* @throws IOException
*/
@Test
public void testDelFile() throws IOException {
// id fs.files fs.chunks
gridFsTemplate.delete(Query.query(Criteria.where("_id").is("5d2f261dd8d5cf41c0465db3")));
}
1、GridFSアクセスファイルテスト
1、ファイルを保存する
GridFsTemplateを使用してファイルテストコードを格納:GridFsTemplateをテストプログラムに注入します.
@SpringBootTest
@RunWith(SpringRunner.class)
public class GridFsTest {
@Autowired
GridFsTemplate gridFsTemplate;
/**
*
*/
@Test
public void testGridFsSaveFile() throws FileNotFoundException {
//
File file = new File("e:/index_banner.ftl");
//
FileInputStream inputStram = new FileInputStream(file);
// GridFS
ObjectId objectId = gridFsTemplate.store(inputStram, " 01", "");
// ID
String fileId = objectId.toString();
System.out.println(file);
}
}
記憶原理説明:ファイル記憶に成功して1つのファイルidを得たこのファイルidはfsである.filesコレクションのプライマリ・キー.ファイルidでfsを問い合わせることができる.chunksテーブルのレコードを取得し、ファイルの内容を取得します.
2、ファイルの読み込み
1)configパッケージでMongodbの構成クラスを定義します.GridFSBucketはダウンロードストリームオブジェクトを開くために使用します.
/**
* @author
* @desc Mongodb
* @email [email protected]
* @create 2019/07/17 21:53
**/
@Configuration
public class MongoConfig {
@Value("${spring.data.mongodb.database}")
String db;
/**
* GridFSBucket
* @param mongoClient
* @return
*/
@Bean
public GridFSBucket getGridFSBucket(MongoClient mongoClient) {
MongoDatabase database = mongoClient.getDatabase(db);
GridFSBucket bucket = GridFSBuckets.create(database);
return bucket;
}
}
テストコード:
@SpringBootTest
@RunWith(SpringRunner.class)
public class GridFsTest {
@Autowired
GridFsTemplate gridFsTemplate;
@Autowired
GridFSBucket gridFSBucket;
/**
*
* @throws IOException
*/
@Test
public void queryFile() throws IOException {
String fileId = "5d2f261dd8d5cf41c0465db3";
// id
GridFSFile gridFSFile = gridFsTemplate.findOne(Query.query(Criteria.where("_id").is(fileId)));
//
GridFSDownloadStream gridFSDownloadStream = gridFSBucket.openDownloadStream(gridFSFile.getObjectId());
// gridFsResource,
GridFsResource gridFsResource = new GridFsResource(gridFSFile, gridFSDownloadStream);
//
String s = IOUtils.toString(gridFsResource.getInputStream(), "utf-8");
System.out.println(s);
}
}
3、ファイルの削除
/**
*
* @throws IOException
*/
@Test
public void testDelFile() throws IOException {
// id fs.files fs.chunks
gridFsTemplate.delete(Query.query(Criteria.where("_id").is("5d2f261dd8d5cf41c0465db3")));
}