2011-06-13 10 views
10

क्या डेटाबेस तालिका से छवियों को प्रदर्शित करने का कोई वेब 2 तरीका है?वेब 2py: मुझे डेटाबेस में संग्रहीत एक अपलोड की गई छवि को कैसे प्रदर्शित करना चाहिए?

उदाहरण:

मॉडल:

db.define_table=('images',Field('picture', 'upload')) 

नियंत्रक:

def somefunction(): to get the image. 

वास्तव में किस प्रकार मैं डेटाबेस से एक चित्र "पढ़ें" चाहिए?

दृश्य:

<img src="{{somefunction}}" /> 

उत्तर

15

के रूप में है, अपने मॉडल डेटाबेस में छवि को संग्रहीत नहीं करेगा - (इसके बजाय, यह छवि फाइल सिस्टम पर, अपने नए डेटाबेस में संग्रहीत फ़ाइल नाम के साथ स्टोर करेगा में 'तस्वीर' फ़ील्ड)। आप डेटाबेस में छवि को ही संग्रहीत करना चाहते हैं, तो निम्न का उपयोग करें:

db.define_table('images', 
    Field('picture', 'upload', uploadfield='picture_file') 
    Field('picture_file', 'blob')) 

चाहे आप फाइल सिस्टम पर या डेटाबेस में छवियों की दुकान, आप उन्हें पुनः प्राप्त करने के एक ही विधि का उपयोग कर सकते हैं। , जैसे कुछ करना

def download(): 
    return response.download(request, db) 

एक छवि को पुनः प्राप्त करने के लिए:: 'स्वागत' मचान आवेदन default.py नियंत्रक में निम्नलिखित download() कार्रवाई भी शामिल है

<img src="{{=URL('default', 'download', args=picture_name)}}" /> 

जहां picture_name 'picture में संग्रहीत मूल्य है 'images' फ़ील्ड 'उस विशेष छवि के लिए तालिका जिसे आप पुनर्प्राप्त करना चाहते हैं।

अधिक जानकारी के लिए, here और here देखें।

यदि आपको और सहायता चाहिए, तो mailing list पर पूछने का प्रयास करें।

+0

जानकारी के लिए Thx ... नहीं मेरा मतलब वास्तव में thx ... – Florin

+0

हाय एंथनी, मैं कुंजी/वैल्यू नोस्कल स्टोरेज में "ब्लॉब" कैसे सहेज सकता हूं? मैं विवरण मांगता हूं, इसे करने का सिर्फ एक तरीका नहीं। अग्रिम में धन्यवाद! – Locke

+1

यदि मैं डीएएल का उपयोग करना चाहता हूं, तो मेरा मानना ​​है कि समर्थित एकमात्र कुंजी/मूल्य स्टोर Google App Engine डेटास्टोर है, और उस स्थिति में, DAL स्वचालित रूप से डेटास्टोर में फ़ाइलों को संग्रहीत करेगा (आपको स्पष्ट रूप से एक स्पष्ट रूप से बनाना भी नहीं है अलग ब्लॉब फ़ील्ड या अपलोडफील्ड तर्क निर्दिष्ट करें)।डीएएल के पास मोंगोडीबी और कॉच डीबी के लिए आंशिक समर्थन भी है, हालांकि वे दस्तावेज़ डेटाबेस हैं, और मुझे यकीन नहीं है कि क्या डीएएल उन फाइलों को संग्रहित करने का समर्थन करता है। – Anthony

2

वैकल्पिक रूप से, अगर आप फ़ाइलों के रूप में छवियों को अपलोड करने की web2py के डिफ़ॉल्ट तरीके से उपयोग, आप का उपयोग कर सकते हैं:

मॉडल में:

db.define_table('images',Field('picture','upload')) 

नियंत्रकों में:

def somefunction(): 
    pic = db(db.images).select().first().picture #select first picture 
    return dict(pic=pic) 

और डिफ़ॉल्ट में /somefunction.html देखें:

{{extend 'layout.html'}} 
<img src="{{=URL('download', args=pic)}}" /> 

मुझे पता है कि यह मूल प्रश्न के कुछ समय बाद है, लेकिन सोचा कि यह उपयोगी हो सकता है क्योंकि मुझे पता लगाने में कुछ समय लगा।

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