原文出自:http://www.mkyong.com/mongodb/java-mongodb-save-image-example/
返回目录: http://ysj5125094.iteye.com/blog/2192754
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.
译:在本教程中,我们将向你展示如何通过 GridFS API 保存一个图片到MongoDB。 GridFS APIs 提供将其他二进制文件的支持,比如视频和音频等。
Note
For detail explanation, read this MongoDB GridFS manual.
译:详细解释,请阅读 MongoDB GridFS 文档 .
Code snippets to save an image file into MongoDB, under “photo” namespace, and assign a new “filename” for the saved image.
译:下面代码片断为保存一个图片文件到MongoDB,在"photo"命名空间下,将图片文件取一个新名保存。
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();
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 }
Code snippets to get all the saved files from MongoDB and iterate it with DBCursor.
译:下面代码片断,从MongoDB中获取所有保存的文件,并用数据库游标迭代输出。
GridFS gfsPhoto = new GridFS(db, "photo"); DBCursor cursor = gfsPhoto.getFileList(); while (cursor.hasNext()) { System.out.println(cursor.next()); }
Code snippets to get an image file from MongoDB and output it to another image file.
译:下面代码片断,从MongoDB中获取一个图片文件并输出(生成另一个图片)。
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
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 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 “.
执行程序之后需要创建一个图片文件 “ c://JavaWebHostingNew.png “。