Jak wstawiać obrazy w mongoDB za pomocą Javy?
Chcę przechowywać dokumenty graficzne w mongoDB.
Używam Javy.
Wszelkie linki lub sugestie będą mile widziane.
3 answers
Do przechowywania danych binarnych jak obrazy możesz użyć GridFS lub zaimplementować własną realizację; pobierz sterownik i spójrz na src/test/com/mongodb/gridfs/GridFSTest.java
;)
Edit: masz dziś szczęście! Zrobiłem dla Ciebie kompletny kod;) 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();
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-09 12:22:43
Dla małych (
Przechowuję wiele miniaturek w dokumentach bezpośrednio za pomocą prostego pola binarnego.
Używam Morphii (http://code.google.com/p/morphia) do przechowywania moich Pojo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-22 16:01:01
Cóż, AFAIK, nie możesz przechowywać obrazów w mongodb , możesz przechowywać linki do obrazów. I nie jestem wysoki, jak mówię to, jeśli obrazy są małe, jak 100x100 px, U można spróbować zapisać obraz w binarnym, i reform i obraz w locie. Ale renderowanie obrazów zajmie trochę czasu, dlatego proponuję zapisać link i pobrać ten obraz i wypełnić go dynamicznie.
Możesz używać GridFS do przechowywania większych obiektów binarnych.
Ponieważ jesteś nowy w mongoDB, spójrz na:
Możesz też zawsze pytać na TAK, ja też jestem nowy w mongoDB i nie miałbym nic przeciwko pomaganiu nowicjuszowi: d
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-22 13:34:53