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

कैसे जांचें कि फ़ाइल पीएल/एसक्यूएल का उपयोग कर छवि है या नहीं?

इस ब्लॉग पोस्ट में, मैं एक फ़ंक्शन साझा कर रहा हूं जिसके साथ आप जांच सकते हैं कि कोई फ़ाइल एक छवि फ़ाइल है या पीएल/एसक्यूएल का उपयोग नहीं कर रही है। प्रोग्राम फ़ाइल की जांच करेगा, इसके हेडर को पढ़कर फ़ाइल का एक्सटेंशन नाम नहीं। वर्तमान में, फ़ंक्शन तीन प्रकार की छवियों की पहचान कर सकता है जो JPG, PNG और GIF हैं।

फ़ाइल एक छवि फ़ाइल है या नहीं यह जांचने के लिए

PL/SQL फ़ंक्शन

निम्नलिखित पीएल/एसक्यूएल फ़ंक्शन फ़ाइल हेडर पढ़ेगा और फिर छवि प्रकार को varchar2 डेटा प्रकार में वापस कर देगा। फ़ंक्शन get_image_type दो तर्क लेता है, और वे इस प्रकार हैं:

  1. Oracle निर्देशिका वस्तु (जैसा कि i_dir) Oracle निर्देशिका ऑब्जेक्ट बनाना सीखें।
  2. फ़ाइल नाम (जैसा कि i_file) फ़ाइल निर्देशिका में मौजूद होनी चाहिए।
CREATE OR REPLACE FUNCTION get_image_type (i_dir    IN VARCHAR2,
                                           i_file   IN VARCHAR2)
   RETURN VARCHAR2
AS
   l_bfile       BFILE;
   l_blob        BLOB;
   l_file_type   VARCHAR2 (50);
BEGIN
   DBMS_LOB.createtemporary (l_blob, FALSE);
   l_bfile := BFILENAME (i_dir, i_file);
   DBMS_LOB.fileopen (l_bfile, DBMS_LOB.file_readonly);
   DBMS_LOB.loadfromfile (l_blob, l_bfile, DBMS_LOB.getlength (l_bfile));
   DBMS_LOB.fileclose (l_bfile);

   IF RAWTOHEX (DBMS_LOB.SUBSTR (l_blob, 8, 1)) = '89504E470D0A1A0A'
   THEN
      l_file_type := 'PNG';
   ELSIF DBMS_LOB.SUBSTR (l_blob, 3, 1) = '474946'
   THEN
      l_file_type := 'GIF';
   ELSIF RAWTOHEX (DBMS_LOB.SUBSTR (l_blob, 3, 1)) = 'FFD8FF'
   THEN
      l_file_type := 'JPG';
   ELSE
      l_file_type := 'The file is not an image.';
   END IF;

   RETURN l_file_type;
EXCEPTION
   WHEN OTHERS
   THEN
      IF DBMS_LOB.fileisopen (l_bfile) = 1
      THEN
         DBMS_LOB.fileclose (l_bfile);
      END IF;

      DBMS_LOB.freetemporary (l_blob);
      RETURN 'The file does not exists.';
END get_image_type;

परीक्षा

नीचे दिए गए PL/SQL प्रोग्राम में, MY_FILES Oracle डायरेक्टरी ऑब्जेक्ट को अपनी डायरेक्टरी ऑब्जेक्ट से बदलें और MY_FILES डायरेक्टरी लोकेशन में उपलब्ध फाइल के साथ फाइल का नाम बदलें।

SET SERVEROUTPUT ON;

DECLARE
   i_image_type   VARCHAR2 (50);
BEGIN
   i_image_type := get_image_type ('MY_FILES', 'oracle-logo-gif-to-use.gif');

   IF i_image_type IN ('JPG', 'GIF', 'PNG')
   THEN
      DBMS_OUTPUT.put_line ('The file is a valid ' || i_image_type || ' image.');
   ELSE
      DBMS_OUTPUT.put_line (i_image_type);
   END IF;
END;
/

आउटपुट

The file is a valid GIF image.
PL/SQL procedure successfully completed.

यह भी देखें:

  • PL/SQL का उपयोग करके Oracle तालिका में फ़ाइल कैसे सम्मिलित करें?

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-06512 को लाइन नंबर पर कैसे हल करें?

  2. के साथ Rownum फ़ंक्शन का उपयोग करना> oracle में साइन इन करें

  3. हाइबरनेट एक ही तालिका में दो बार शामिल होने के लिए मानदंड बनाएं - 2 अंतर त्रुटि के साथ 2 दृष्टिकोण की कोशिश की

  4. Oracle तालिका/स्तंभ/सूचकांक नाम 30 वर्णों तक सीमित क्यों हैं?

  5. WHERE IN क्लॉज में उपयोग करने के लिए Oracle प्रक्रिया में मानों की एक सरणी भेजना