MongoDB結合Spring隱藏檔(圖片、音頻等等)

來源:互聯網
上載者:User

MongoDB 儲存圖片等檔案有兩種方式

(該文章針對的是已經可以使用MONGODB整合Spring的使用者)

1.使用MongoTemplate

/**     * 隱藏檔      * @param collectionName 集合名      * @param file 檔案      * @param fileid 檔案id      * @param companyid 檔案的公司id      * @param filename 檔案名稱     */    public void SaveFile(String collectionName, File file, String fileid, String companyid, String filename) {        try {            DB db = mongoTemplate.getDb();            // 儲存fs的根節點            GridFS gridFS = new GridFS(db, collectionName);            GridFSInputFile gfs = gridFS.createFile(file);            gfs.put("aliases", companyid);            gfs.put("filename", fileid);            gfs.put("contentType", filename.substring(filename.lastIndexOf(".")));            gfs.save();        } catch (Exception e) {            e.printStackTrace();            System.out.println("隱藏檔時發生錯誤!!!");        }    }     // 取出檔案    public GridFSDBFile retrieveFileOne(String collectionName, String filename) {        try {            DB db = mongoTemplate.getDb();            // 擷取fs的根節點            GridFS gridFS = new GridFS(db, collectionName);            GridFSDBFile dbfile = gridFS.findOne(filename);            if (dbfile != null) {                return dbfile;            }        } catch (Exception e) {            // TODO: handle exception        }        return null;    }//抱歉項目案例不能給你,不過這個是向mongodb存取檔案的實現代碼,希望能協助到你。//由GridFSDBFile 可以得到inputStream,這樣你就明白了吧。

2.使用GridFsTemplate

 網上找到的第一種方法總結的非常的不好,Spring結合的感覺不夠緊密。 Google了下參考了下網上的文章。

參考文章


Spring 偽配置

<mongo:mongo host="127.0.0.1" port="27017"><mongo:options connections-per-host="200"threads-allowed-to-block-for-connection-multiplier="100"connect-timeout="1000" max-wait-time="1500" auto-connect-retry="true"socket-keep-alive="true" socket-timeout="1500" slave-ok="true"write-number="1" write-timeout="0" write-fsync="true" /></mongo:mongo><mongo:db-factory dbname="***" username="***"password="***" mongo-ref="mongo" /><mongo:mapping-converter id="converter"db-factory-ref="mongoDbFactory" /><!-- 取圖函數 --><bean id="gridFsTemplate" class="org.springframework.data.mongodb.gridfs.GridFsTemplate"><constructor-arg ref="mongoDbFactory" /><constructor-arg ref="converter" /><constructor-arg value="****" index="2" /><!-- 表名 --></bean>      <bean id="abstractMongoDB" class="com.***.AbstractMongoDB"        abstract="true">        <property name="mongoTemplate">            <ref bean="mongoTemplate" />        </property>        <property name="gridFsTemplate">            <ref bean="gridFsTemplate" />        </property>     </bean>

Java 虛擬碼

List<GridFSDBFile> files = this.getGridFsTemplate().find(null); //查詢全部,查詢方式和MongoTemplate一樣System.out.println("-----------------");    for (GridFSDBFile file: files) {     System.out.println(file);   }









相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.