PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

सर्वलेट्स का उपयोग करके पोस्टग्रेस्क्ल डेटाबेस में एक पीडीएफ फाइल कैसे स्टोर करें?

यह स्पष्ट नहीं है कि आप किस दृढ़ता API का उपयोग कर रहे हैं। जेडीबीसी? जेपीए? अच्छा राजभाषा 'हाइबरनेट? मैं JDBC मान लूंगा। JDBC में, आप PreparedStatement#setBinaryStream() एक इनपुटस्ट्रीम स्टोर करने के लिए डेटाबेस में, या तैयार स्टेटमेंट#सेटबाइट्स() एक बाइट[] स्टोर करने के लिए डेटाबेस में। किसी भी तरह, PostgreSQL में आपको एक bytea इसके लिए कॉलम।

जैसा कि आप अपलोड की गई फ़ाइल को PdfReader . द्वारा सत्यापित कर रहे हैं सबसे पहले, इनपुटस्ट्रीम अनुपयुक्त है। इसे केवल एक बार ही पढ़ा जा सकता है। जब भी आपको InputStream पढ़ने की आवश्यकता होगी, क्लाइंट कई बार फ़ाइल को दोबारा नहीं भेजेगा फिर से। आपको InputStream को कॉपी करना होगा एक बाइट[] . के लिए पहला।

ByteArrayOutputStream output = new ByteArrayOutputStream();
IOUtils.copy(localFileItem.getInputStream(), output);
byte[] filecontent = output.toByteArray();

(IOUtils अपाचे कॉमन्स आईओ का हिस्सा है; यदि आप FileUpload का उपयोग कर रहे हैं, तो आपके पास पहले से ही है)

byte[] . का उपयोग करने के लिए iText को बदलना न भूलें इसके बजाय:

PdfReader localPdfReader = new PdfReader(filecontent);

आपके द्वारा iText द्वारा इसे सत्यापित करने के बाद, आप इसे PostgreSQL bytea . में संग्रहीत कर सकते हैं JDBC का उपयोग करते हुए कॉलम इस प्रकार है:

statement = connection.prepareStatement("INSERT INTO files (name, content) VALUES (?, ?)");
statement.setString(1, filename);
statement.setBytes(2, filecontent);
statement.executeUpdate();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में हाइफ़न (-) के लिए एस्केप सीक्वेंस क्या है

  2. मैं दो JSON सरणियों के अंदर रिकॉर्ड कैसे मर्ज कर सकता हूं?

  3. Group by का उपयोग करके एक बार में कई गैर-दोहराई गई पंक्तियों को अपडेट करने के लिए

  4. पोस्टग्रेएसक्यूएल कॉपी सीएसवी उद्धरण सहित

  5. pgbouncer के लिए कनेक्शन थ्रूपुट कैसे बढ़ाएं?