zoukankan      html  css  js  c++  java
  • Java MongoDB : Save image example

    In this tutorial, we show you how to save an image file into MongoDB, via GridFS API. The GridFS APIs are able to serve other binary files as well, like video and music files.

    1. Save image

    Code snippets to save an image file into MongoDB, under “photo” namespace, and assign a new “filename” for the saved image.

    	String newFileName = "mkyong-java-image";
    	File imageFile = new File("c:\JavaWebHosting.png");
    	GridFS gfsPhoto = new GridFS(db, "photo");
    	GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile);
    	gfsFile.setFilename(newFileName);
    	gfsFile.save();
    

    2. Get image

    Code snippets to get the saved image by its “filename”.

    	String newFileName = "mkyong-java-image";
    	GridFS gfsPhoto = new GridFS(db, "photo");
    	 GridFSDBFile imageForOutput = gfsPhoto.findOne(newFileName);
    	System.out.println(imageForOutput);
    

    Output, the image is saved as following JSON format.

    { 
    	"_id" : 
    	{ 
    		"$oid" : "4dc9511a14a7d017fee35746"
    	} , 
    	"chunkSize" : 262144 , 
    	"length" : 22672 , 
    	"md5" : "1462a6cfa27669af1d8d21c2d7dd1f8b" , 
    	"filename" : "mkyong-java-image" , 
    	"contentType" :  null  , 
    	"uploadDate" : 
    	{ 
    		"$date" : "2011-05-10T14:52:10Z"
    	} , 
    	"aliases" :  null 
    }
    

    3. Print all saved images

    Code snippets to get all the saved files from MongoDB and iterate it with DBCursor.

    	GridFS gfsPhoto = new GridFS(db, "photo");
    	DBCursor cursor = gfsPhoto.getFileList();
    	while (cursor.hasNext()) {
    		System.out.println(cursor.next());
    	}
    

    4. Save into another image

    Code snippets to get an image file from MongoDB and output it to another image file.

    	String newFileName = "mkyong-java-image";
    	GridFS gfsPhoto = new GridFS(db, "photo");
    	GridFSDBFile imageForOutput = gfsPhoto.findOne(newFileName);
    	imageForOutput.writeTo("c:\JavaWebHostingNew.png"); //output to new file
    

    5. Delete image

    Code snippets to delete an image file.

    	String newFileName = "mkyong-java-image";
    	GridFS gfsPhoto = new GridFS(db, "photo");
    	gfsPhoto.remove(gfsPhoto.findOne(newFileName));
    

    Full Example

    Full example to work with image, via Java MongoDB GridFS API. See comments for explanation.

    package com.mkyong.core;
    
    import java.io.File;
    import java.io.IOException;
    import java.net.UnknownHostException;
    import com.mongodb.DB;
    import com.mongodb.DBCollection;
    import com.mongodb.DBCursor;
    import com.mongodb.Mongo;
    import com.mongodb.MongoException;
    import com.mongodb.gridfs.GridFS;
    import com.mongodb.gridfs.GridFSDBFile;
    import com.mongodb.gridfs.GridFSInputFile;
    
    /**
     * Java MongoDB : Save image example
     * 
     */
    
    public class SaveImageApp {
    	public static void main(String[] args) {
    
    		try {
    
    			Mongo mongo = new Mongo("localhost", 27017);
    			DB db = mongo.getDB("imagedb");
    			DBCollection collection = db.getCollection("dummyColl");
    
    			String newFileName = "mkyong-java-image";
    
    			File imageFile = new File("c:\JavaWebHosting.png");
    
    			// create a "photo" namespace
    			GridFS gfsPhoto = new GridFS(db, "photo");
    
    			// get image file from local drive
    			GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile);
    
    			// set a new filename for identify purpose
    			gfsFile.setFilename(newFileName);
    
    			// save the image file into mongoDB
    			gfsFile.save();
    
    			// print the result
    			DBCursor cursor = gfsPhoto.getFileList();
    			while (cursor.hasNext()) {
    				System.out.println(cursor.next());
    			}
    
    			// get image file by it's filename
    			GridFSDBFile imageForOutput = gfsPhoto.findOne(newFileName);
    
    			// save it into a new image file
    			imageForOutput.writeTo("c:\JavaWebHostingNew.png");
    
    			// remove the image file from mongoDB
    			gfsPhoto.remove(gfsPhoto.findOne(newFileName));
    
    			System.out.println("Done");
    
    		} catch (UnknownHostException e) {
    			e.printStackTrace();
    		} catch (MongoException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    
    	}
    }
    

    At the end of the program, a new image file is created in “c:\JavaWebHostingNew.png“.

  • 相关阅读:
    9-10-堆 Windows消息队列(25 分)
    9-7 二叉搜索树的结构(30 分)
    9-4 笛卡尔树(25 分)
    9-3 搜索树判断(25 分)
    7-9 堆中的路径(25 分)
    个人总结
    软工网络15个人作业4——alpha阶段个人总结
    软件工程网络15个人作业3——案例分析(201521123029 郑佳明)
    软件工程15 结对编程作业
    软件工程网络15个人阅读作业2(201521123029 郑佳明)
  • 原文地址:https://www.cnblogs.com/ghgyj/p/4847474.html
Copyright © 2011-2022 走看看