Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara memeriksa apakah File adalah Gambar Menggunakan PL/SQL?

Dalam posting blog ini, saya membagikan fungsi yang dengannya Anda dapat memeriksa apakah suatu file adalah file gambar atau tidak menggunakan PL/SQL. Program akan memeriksa file dengan membaca header-nya bukan nama ekstensi file. Saat ini, fungsinya dapat mengidentifikasi tiga jenis gambar yaitu JPG, PNG, dan GIF.

Fungsi PL/SQL untuk Memeriksa apakah File adalah File Gambar

Fungsi PL/SQL berikut akan membaca file header dan kemudian akan mengembalikan tipe gambar dalam tipe data varchar2. Fungsi get_image_type mengambil dua argumen, yaitu sebagai berikut:

  1. Objek Direktori Oracle (sebagai i_dir) Pelajari Cara Membuat Objek Direktori Oracle.
  2. Nama file (sebagai i_file) file harus ada di direktori.
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;

Uji

Dalam program PL/SQL di bawah ini, ubah objek direktori Oracle MY_FILES dengan objek direktori Anda dan ubah nama file dengan file yang tersedia di lokasi direktori 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;
/

Keluaran

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

Lihat juga:

  • Bagaimana Menyisipkan File di Tabel Oracle menggunakan PL/SQL?

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa Itu Versi Utama?

  2. Bagaimana cara memeriksa apakah kursor mengembalikan catatan apa pun di Oracle?

  3. Apa Itu Prosedur Tersimpan PL/SQL Dalam Database Oracle?

  4. NOT IN seleksi dengan nilai NULL

  5. Nilai Data Seiring Waktu