2010-11-22 7 views
36

मैं mongoDB में छवि दस्तावेज़ों को संग्रहीत करना चाहता हूं।
मैं जावा का उपयोग कर रहा हूं।जावा का उपयोग कर mongoDB में छवियों को कैसे सम्मिलित करें?

किसी भी लिंक या सुझाव की सराहना की जाएगी।

उत्तर

37

छवियों जैसे बाइनरी डेटा को संग्रहीत करने के लिए आप GridFS का उपयोग कर सकते हैं या अपनी खुद की प्राप्ति को लागू कर सकते हैं; driver डाउनलोड करें और src/test/com/mongodb/gridfs/GridFSTest.java देखें;)

संपादित करें: आज आप भाग्यशाली हैं! मैंने आपके लिए पूरा कोड बनाया;) आनंद लें!

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

आपके कोड के लिए धन्यवाद। मैंने एक ही प्रक्रिया के लिए एक कोड भी बनाया। लेकिन तुम्हारा से मेरा आसान है !!! –

+0

तो, एक HTML फ़ाइल को लिखने के लिए, क्या आप सर्वर पर चित्र स्थान को HTML पर आउटपुट करेंगे? – Jeff

+0

विशेष रूप से 'लोडइमेज' विधि के लिए, बहुत बहुत धन्यवाद। –

2

ठीक है, AFAIK, आप mongodb में छवियों को स्टोर नहीं कर सकते हैं, आप छवियों के लिंक स्टोर कर सकते हैं। और मैं उच्च नहीं हूं क्योंकि मैं यह कहता हूं, अगर छवियां छोटी हैं, 100x100 पीएक्स की तरह, यू बाइनरी में छवि को संग्रहीत करने और फ्लाई पर सुधार और छवि को संग्रहीत करने का प्रयास कर सकता है। लेकिन, छवियों को प्रस्तुत करने में कुछ समय लगेगा, और इसलिए मैं आपको लिंक को सहेजने का सुझाव देता हूं, और बस उस छवि को लाता हूं और इसे गतिशील रूप से पॉप्युलेट करता हूं।

आप बड़ी बाइनरी वस्तुओं को स्टोर करने के लिए ग्रिडएफएस का उपयोग कर सकते हैं।

जब से तुम MongoDB के लिए नए हैं, पर एक नज़र डालें:

Link 1

Link 2

Mongo+JAVA Tutorial

GridFS specs

तुम भी हमेशा पर पूछ सकते हैं तो, मैं कर रहा हूँ MongoDB के लिए भी नया है, और एक नौसिखिया के साथ मदद करने में कोई दिक्कत नहीं होगी: डी

+0

आप midodb में सादे दस्तावेज़ के साथ ग्रिडएफएस फ़ाइल को कैसे लिंक करते हैं। कहो, मैं एक बड़ी छवि अपलोड कर रहा हूं और मैं इसे ग्रिडएफएस में संग्रहीत करता हूं। मैं किसी भी संग्रह में किसी दस्तावेज़ में फ़ाइल के अन्य विवरणों को सहेजता हूं। जब मैं संग्रह से दस्तावेज़ पढ़ता हूं, तो मैं संबंधित छवि को कैसे पुनर्प्राप्त कर सकता हूं ??? –

+1

मुझे नहीं पता कि ऐसा करने के लिए कोई एपीआई विधि है या नहीं, आप दोनों मूल्यों में एक फ़ील्ड बनाकर, समान मूल्यों के साथ एक लिंक बनाते हैं। तो जब आप पहले संग्रह में मूल्य भरते हैं, तो आप छवि के संग्रह को मूल्य के साथ क्वेरी करते हैं, और संबंधित छवि में आते हैं। – theTuxRacer

5

छोटे (< 1MB) के लिए छवियों मैं उन्हें एक द्विआधारी क्षेत्र में भंडारण के सुझाव देंगे (बाइट [] जावा में); यदि आपके पास बड़ी फ़ाइलें हैं तो ग्रिडएफएस बेहतर काम करेगा।

मैं अपने दस्तावेज़ों में सीधे एक साधारण बाइनरी फ़ील्ड का उपयोग करके बहुत सारे थंबनेल स्टोर करता हूं।

मैं अपने पीओजेओ को स्टोर करने के लिए मॉर्फिया (http://code.google.com/p/morphia) का उपयोग करता हूं।

+0

मैं मोंगो में बहुत सारी छवियों को स्टोर करने जा रहा हूं। दोनों थंबनेल और सामान्य आकार। क्या मेरे लिए पोजो आवश्यक है ?? !!! –

+0

क्या आप मुझे बता सकते हैं कि आप मोंगो में छवियों का प्रतिनिधित्व कैसे करते हैं। जैसे, {"x": 1, "y": 2} आप छवियों का प्रतिनिधित्व कैसे करते हैं ???? –

+0

आप अपनी छवियों को कैसे स्टोर करते हैं? सब एक दस्तावेज़ में? या एक संग्रह में अलग दस्तावेज़?या कहें कि क्या मैं एक दस्तावेज़ में एकाधिक छवि को स्टोर करना चाहता हूं जो '{" नाम ":" तमिल "," आयु ": 23," छवियां "{" image1 ": 123.jpg," image2 ": abc.jpg जैसा दिखता है }} 'मैं जावा के साथ कैसे करूँगा –

संबंधित मुद्दे