我想将图像文档存储在MongoDB中。我正在使用Java。
欢迎提供任何链接或建议。
我想将图像文档存储在MongoDB中。我正在使用Java。
欢迎提供任何链接或建议。
如果要存储像图片这样的二进制数据,您可以使用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)图像,我建议将它们存储在二进制字段中(在Java中为byte[]);如果您有更大的文件,则GridFS效果更好。
我直接在我的文档中使用简单的二进制字段存储了许多缩略图。
我使用Morphia(http://code.google.com/p/morphia)来存储我的POJOs。
{ "name" : "Tamil", "age" : 23, "Images"{"image1" : 123.jpg, "image2": abc.jpg}}
,我该如何使用Java实现呢? - user405398据我所知,您不能在mongodb中存储图像,您可以存储图像的链接。我说这话并没有高估自己,如果图像很小,比如100x100 px,您可以尝试以二进制形式存储图像,并即时重新生成图像。但是,渲染图像需要一些时间,因此建议您保存链接,仅在需要时动态获取该图像并填充。
您可以使用GridFS来存储较大的二进制对象。
由于您是新手,请参考以下内容:
您也可以在SO上提问,我也是一个mongodb新手,不介意帮助新手:D