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.

Author: gnat, 2010-11-22

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();
    }
}
 41
Author: Edward83,
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.

 5
Author: Scott Hernandez,
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:

Link 1

Link 2

Mongo + Java Tutorial

Gridfs specs

Możesz też zawsze pytać na TAK, ja też jestem nowy w mongoDB i nie miałbym nic przeciwko pomaganiu nowicjuszowi: d

 2
Author: theTuxRacer,
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