Comment insérer des images en mongoDB en utilisant java?

je veux stocker des documents image en mongoDB.

Je suis à l'aide de java.

tout lien ou suggestion serait apprécié.

39
demandé sur gnat 2010-11-22 16:19:44

3 réponses

pour stocker des données binaires comme des images, vous pouvez utiliser GridFS ou mettre en œuvre votre propre réalisation; Télécharger le pilote et cliquez sur src/test/com/mongodb/gridfs/GridFSTest.java;)

Edit: vous avez de la chance aujourd'hui! J'ai fait code complet pour vous;) Profitez-en!

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
répondu Edward83 2012-02-09 12:22:43

pour les petites images (<1mb) je suggère de les stocker dans un champ binaire (byte[] en java); si vous avez des fichiers plus grands GridFS fonctionnera mieux.

je stocke beaucoup de vignettes dans Mes documents directement en utilisant un simple champ binaire.

j'utilise Morphia (http://code.google.com/p/morphia) pour stocker mes Pojo.

5
répondu Scott Hernandez 2010-11-22 16:01:01

Eh bien, AFAIK, vous ne pouvez pas stocker des images en mongodb, vous pouvez stocker les liens vers les images. Et je ne suis pas haut comme je le dis, si les images sont petites, comme 100x100 px, vous pouvez essayer de stocker l'image en binaire, et la réforme et l'image à la volée. Mais, il faudra un certain temps pour rendre les images, et donc je vous suggère de sauvegarder le lien, et juste de récupérer cette image et de la peupler dynamiquement.

vous pouvez utiliser GridFS pour stocker des objets binaires plus grands.

depuis que vous sont nouveaux pour mongoDB, jetez un oeil à:

Lien 1

Lien 2

Mongo+Java Tutorial

GridFS specs

Vous pouvez aussi demandez toujours TELLEMENT, je suis également nouveau sur mongoDB, et ne me dérange pas d'aider un débutant :D

2
répondu theTuxRacer 2010-11-22 13:34:53