Grails

2009-04-06 18 views
6

के साथ डेटाबेस में फ़ाइल को संग्रहीत करने के लिए मुझे Grails का उपयोग कर डेटाबेस में फ़ाइल को स्टोर करने की आवश्यकता है। तो, क्या आप जानते हैं कि मैं यह कैसे कर सकता हूं? डोमेन क्लास में कौन से डेटा प्रकार का उपयोग करना चाहिए (बाइट [] एक समाधान हो सकता है)?Grails

उत्तर

7

Grails User Guide में फ़ाइलों को अपलोड करने पर अध्याय देखें। बाइनरी सामग्री के लिए java.sql.Blob प्रकार के रूप में उपयोग करना भी संभव है (जो बड़ी फ़ाइलों से निपटने के दौरान बेहतर होगा)।

+2

यह अब एक मृत कड़ी है – Randyaa

5

वैकल्पिक रूप से, फ़ाइल को डिस्क पर संग्रहीत करें, और डेटाबेस में पथ को संग्रहीत करें। डिस्क पर उस फ़ाइल को डीबी की तुलना में एक्सेस करना आम तौर पर तेज़ होता है। लेकिन निश्चित रूप से, यह वास्तव में ऐप में आपकी ज़रूरतों पर निर्भर करता है। लेकिन इस विकल्प से अवगत रहें।

+1

मुझे इस विकल्प से अवगत है क्योंकि मैंने PHP में दोनों का उपयोग किया है। मुझे लगता है कि मैं फ़ाइल सिस्टम विकल्प का उपयोग करूंगा, क्योंकि एप्लिकेशन और/या स्टोरेज को स्केल करने के लिए पूरे फ़ाइल भंडार को स्थानांतरित करना आसान है। धन्यवाद दोस्तों। – rtacconi

0

मैं हाल ही में उपयोग बाइट [] फ़ाइल भंडारण के लिए एक डोमेन वर्ग में, यह ठीक काम कर रहा था जब तक मैं "HSQLDB" "Oracle एक्सप्रेस" से अपने आवेदन ले जाया गया। ओरेकल पर, बाइट [] को ब्लॉब के बजाय कच्चे ऑब्जेक्ट में मैप किया गया था ... (यकीन नहीं है कि वास्तव में क्या गलत था) और अंततः मैं java.sql.blob

2

का उपयोग करके समस्या का समाधान करता हूं एक ही समस्या है। मुझे बस इतना करना था कि डेटाबेस (ओरेकल) पर जाएं और कॉल प्रकार को रॉ से ब्लॉब में बदलें। (असल में मुझे कॉलम को हटाना था और फिर एक नया निर्माण करना था)। मैं ऊपर बताए गए अनुसार "java.sql.Blob" का उपयोग करने में कभी भी सक्षम नहीं था। मुझे यह this (converting from bytes to Blob) मिला, लेकिन यह थोड़ा जटिल लग रहा था।

3

आप जब अद्यतन करने या स्तंभ मैपिंग के साथ डेटाबेस पैदा एक विशेष प्रकार का उपयोग करने के लिए डोमेन वस्तु के लिए मजबूर कर सकते हैं:

byte[] orgFile 

static mapping = { 
    columns { 
    orgFile type:'blob' 
    } 
} 

यह अब तक मेरे लिए काम किया है;)