如何使用Java在mongoDB中插入图像?
我想将图像文件存储在mongoDB中。
我正在使用java。
任何链接或build议,将不胜感激。
为了存储像图像这样的二进制数据,你可以使用GridFS或者实现你自己的实现; 下载驱动程序并查看src/test/com/mongodb/gridfs/GridFSTest.java
;)
编辑:你今天很幸运! 我为你做了完整的代码;)享受!
package mongodb.testing.java; import com.mongodb.*; import com.mongodb.gridfs.*; import java.io.*; public class Main { public static byte[] LoadImage(String filePath) throws Exception { File file = new File(filePath); int size = (int)file.length(); byte[] buffer = new byte[size]; FileInputStream in = new FileInputStream(file); in.read(buffer); in.close(); return buffer; } public static void main(String[] args) throws Exception { //Load our image byte[] imageBytes = LoadImage("C:/Temp/bear.bmp"); //Connect to database Mongo mongo = new Mongo( "127.0.0.1" ); String dbName = "GridFSTestJava"; DB db = mongo.getDB( dbName ); //Create GridFS object GridFS fs = new GridFS( db ); //Save image into database GridFSInputFile in = fs.createFile( imageBytes ); in.save(); //Find saved image GridFSDBFile out = fs.findOne( new BasicDBObject( "_id" , in.getId() ) ); //Save loaded image from database into new image file FileOutputStream outputImage = new FileOutputStream("C:/Temp/bearCopy.bmp"); out.writeTo( outputImage ); outputImage.close(); } }
对于小的(<1mb)图像,我build议将它们存储在二进制字段(在Java中字节[]); 如果你有更大的文件,GridFS会更好。
我使用简单的二进制字段直接在文档中存储大量缩略图。
我使用Morphia(http://code.google.com/p/morphia)来存储我的POJO。;
那么,AFAIK,你不能存储在MongoDB的图像 ,你可以存储链接到图像。 而我说的不高,如果图像很小,像100×100像素,U可以尝试存储图像的二进制,并改造和形象上飞。 但是,渲染图片需要一些时间,因此我build议您保存链接,然后抓取该图片并dynamic填充。
您可以使用GridFS来存储较大的二进制对象。
由于您是mongoDB的新手,请查看:
链接1
链接2
Mongo + JAVA教程
GridFS规范
你也可以一直问这个,我也是mongoDB的新手,不会介意帮助新手:D