2010-11-22 10 views

Répondre

37

Pour stocker des données binaires comme des images, vous pouvez utiliser GridFS ou implémenter votre propre réalisation; Téléchargez le driver et regardez src/test/com/mongodb/gridfs/GridFSTest.java;)

Edit: vous avez de la chance aujourd'hui! J'ai fait le code complet pour vous;) 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(); 
    } 
} 
+0

merci pour votre code. J'ai aussi fait un code pour le même processus. Mais le tien est simple que le mien !!! –

+0

Donc, pour écrire dans un fichier html, est-ce que vous enverriez l'emplacement de l'image sur le serveur au HTML? – Jeff

+0

Merci beaucoup, surtout pour la méthode 'LoadImage'. –

2

Eh bien, AFAIK, vous ne pouvez pas stocker des images dans mongodb , vous pouvez stocker les liens vers les images. Et je ne suis pas élevé comme je le dis, si les images sont petites, comme 100x100 px, U peut 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 par conséquent je vous suggère de sauvegarder le lien, et il suffit de récupérer cette image et de la peupler dynamiquement.

Vous pouvez utiliser GridFS pour stocker des objets binaires plus volumineux.

Puisque vous êtes nouveau à MongoDB, jetez un oeil à:

Link 1

Link 2

Mongo+JAVA Tutorial

GridFS specs

Vous pouvez également toujours demander sur, je suis aussi nouveau pour mongoDB, et ne me dérangerait pas d'aider un débutant le long: D

+0

Comment lier le fichier GridFS avec un document brut dans mongodb. Dites, je télécharge une grande image et je la stocke dans GridFS. Je sauvegarde les autres détails du fichier dans un document de n'importe quelle collection. Comment puis-je récupérer l'image associée, quand je lis le document de la collection ??? –

+1

Je ne sais pas s'il existe une méthode API pour le faire, vous créez un lien entre eux, en créant un champ dans les deux collections, avec les mêmes valeurs. Ainsi, lorsque vous rencontrez la valeur de la première collection, jsut interroge la collection d'images avec la valeur, et rencontre l'image correspondante. – theTuxRacer

5

Pour les petits (< 1MB) images que je vous suggère de les stocker dans un champ binaire (octet [] en java); Si vous avez des fichiers plus gros, GridFS fonctionnera mieux.

Je stocke beaucoup de miniatures dans mes documents directement en utilisant un simple champ binaire. J'utilise Morphia (http://code.google.com/p/morphia) pour stocker mes POJOs.

+0

Je vais stocker beaucoup d'images dans mongo. Les deux vignettes et la taille ordinaire. Est-ce que pojo est essentiel pour moi ?? !!! –

+0

Pouvez-vous me dire comment vous représentez les images dans Mongo. J'aime, {"x": 1, "y": 2} comment représentez-vous les images ???? –

+0

Comment stockez-vous vos images? Tout en un document? ou des documents distincts dans une collection?ou Dire si je veux stocker plusieurs images dans un document qui ressemble '{" nom ":" Tamil "," âge ": 23," Images "{" image1 ": 123.jpg," image2 ": abc.jpg }} 'Comment dois-je faire avec Java –

Questions connexes