इस ब्लॉग पोस्ट में, मैं एक फ़ंक्शन साझा कर रहा हूं जिसके साथ आप जांच सकते हैं कि कोई फ़ाइल एक छवि फ़ाइल है या पीएल/एसक्यूएल का उपयोग नहीं कर रही है। प्रोग्राम फ़ाइल की जांच करेगा, इसके हेडर को पढ़कर फ़ाइल का एक्सटेंशन नाम नहीं। वर्तमान में, फ़ंक्शन तीन प्रकार की छवियों की पहचान कर सकता है जो JPG, PNG और GIF हैं।
फ़ाइल एक छवि फ़ाइल है या नहीं यह जांचने के लिएPL/SQL फ़ंक्शन
निम्नलिखित पीएल/एसक्यूएल फ़ंक्शन फ़ाइल हेडर पढ़ेगा और फिर छवि प्रकार को varchar2 डेटा प्रकार में वापस कर देगा। फ़ंक्शन get_image_type दो तर्क लेता है, और वे इस प्रकार हैं:
- Oracle निर्देशिका वस्तु (जैसा कि i_dir) Oracle निर्देशिका ऑब्जेक्ट बनाना सीखें।
- फ़ाइल नाम (जैसा कि 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 तालिका में फ़ाइल कैसे सम्मिलित करें?
-
ORA-06512 को लाइन नंबर पर कैसे हल करें?
-
के साथ Rownum फ़ंक्शन का उपयोग करना> oracle में साइन इन करें
-
हाइबरनेट एक ही तालिका में दो बार शामिल होने के लिए मानदंड बनाएं - 2 अंतर त्रुटि के साथ 2 दृष्टिकोण की कोशिश की
-
Oracle तालिका/स्तंभ/सूचकांक नाम 30 वर्णों तक सीमित क्यों हैं?
-
WHERE IN क्लॉज में उपयोग करने के लिए Oracle प्रक्रिया में मानों की एक सरणी भेजना