本篇內容介紹了“GridFS的原理和應用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
GridFS是MongoDB提供的用于持久化存儲文件的模塊,CMS使用Mongo DB存儲數據,使用FGridFS可以快速集成開發。
工作原理:
在GridFS存儲文件是將文件分塊存儲,文件會按照256KB的大小分割成多個塊進行存儲,GridFS使用兩個集合(collection)存儲文件,一個集合是chunks,用于存儲文件的二進制數據;一個集合是files,用于存儲文件的元數據(文件名稱,大小,上傳時間等信息)。
入門代碼:
一、添加依賴
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency>
二、創建啟動類
package lianbang.wu.gridfs;
import com.mongodb.MongoClient;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class GridFSApplication {
public static void main(String[] args) {
SpringApplication.run(GridFSApplication.class);
}
}三、配置文件
server: port: 31001 spring: application: name: xc-service-manage-cms data: mongodb: uri: mongodb://root:123@localhost:27017 #mongodb連接 database: xc-cms #數據庫名稱
四、創建配置類
@Configuration
public class GridFsConfig {
@Value("${spring.data.mongodb.database}")
String db;
@Bean
public GridFSBucket getGridFSBucket(MongoClient mongoClient){
MongoDatabase database = mongoClient.getDatabase(db);
GridFSBucket bucket = GridFSBuckets.create(database);
return bucket;
}
}五、測試代碼
public class GridFSTest {
@Autowired
GridFsTemplate gridFsTemplate;
@Autowired
GridFSBucket gridFSBucket;
//保存文件
@Test
public void testGridFs() throws FileNotFoundException {
File file = new File("d:/index_banner.html");
FileInputStream fileInputStream = new FileInputStream(file);
ObjectId objectId = gridFsTemplate.store(fileInputStream, "測試文件");
String fileId = objectId.toString();
System.out.println(fileId);
}
//讀取文件
@Test
public void queryFile() throws IOException {
String fileId = "123456";//模擬的id
GridFSFile gridFSFile = gridFsTemplate.findOne(Query.query(Criteria.where("_id").is(fileId)));
GridFSDownloadStream gridFSDownloadStream = gridFSBucket.openDownloadStream(gridFSFile.getObjectId());
GridFsResource gridFsResource = new GridFsResource(gridFSFile,gridFSDownloadStream);
String string = IOUtils.toString(gridFsResource.getInputStream(), "utf-8");
System.out.println(string);
}
//刪除文件
@Test
public void testDelFile(){
gridFsTemplate.delete(Query.query(Criteria.where("_id").is("1234")));
}
}“GridFS的原理和應用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。