How to insert images in mongoDB using java?
For small (<1mb) images I'd suggest storing them in a binary field (byte[] in java); if you have larger files GridFS will work better.
I store lots of thumbnails in my documents directly using a simple binary field.
I use Morphia (http://code.google.com/p/morphia) to store my POJOs.
Well, AFAIK, you cant store images in mongodb, you can store the links to images. And I am not high as I say this, if the images are small, like 100x100 px, U can try storing the image in binary, and reform and image on the fly. But, it will take some time to render the images, and hence I suggest you to save the link, and just fetch that image and populate it dynamically.
You can use GridFS to store larger binary objects.
Since you are new to mongoDB, take a look at:
Link 1
Link 2
Mongo+JAVA Tutorial
GridFS specs
You can also always ask on SO, I am also new to mongoDB, and wouldn't mind helping a newbie along :D
For storing binary data like images you can use GridFS or implement your own realization; Download the driver and look at src/test/com/mongodb/gridfs/GridFSTest.java
;)
Edit: you are lucky today! I made complete code for you;) Enjoy!
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();
}
}