本篇內(nèi)容介紹了“GridFS的原理和應(yīng)用”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、做網(wǎng)站服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)天等免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
GridFS是MongoDB提供的用于持久化存儲文件的模塊,CMS使用Mongo DB存儲數(shù)據(jù),使用FGridFS可以快速集成開發(fā)。
工作原理:
在GridFS存儲文件是將文件分塊存儲,文件會按照256KB的大小分割成多個塊進行存儲,GridFS使用兩個集合(collection)存儲文件,一個集合是chunks,用于存儲文件的二進制數(shù)據(jù);一個集合是files,用于存儲文件的元數(shù)據(jù)(文件名稱,大小,上傳時間等信息)。
入門代碼:
一、添加依賴
org.springframework.boot spring-boot-starter-data-mongodb org.springframework.boot spring-boot-starter-test org.springframework.boot spring-boot-starter-web org.apache.commons commons-io 1.3.2
二、創(chuàng)建啟動類
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 #數(shù)據(jù)庫名稱
四、創(chuàng)建配置類
@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的原理和應(yīng)用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!