Di Oracle 12c dan seterusnya, di mana Oracle Apex secara default diinstal, Anda dapat menggunakan APEX_ZIP
Paket PL/SQL untuk meng-zip file. Jadi di sini saya memberikan beberapa Oracle APEX_ZIP
contoh:
Contoh APEX_ZIP Oracle
Kode PL/SQL berikut mendapatkan file (BLOB
) dari tabel dan zip, dan memberi Anda BLOB
final terakhir yang memiliki semua file yang Anda tambahkan.
declare b_zip_file blob; cursor c_files is select file_name, file_content from emp_files where empno = 7894; begin for c in c_files loop -- adds the each blob to b_zip_file blob one by one apex_zip.add_file ( p_zipped_blob => b_zip_file, p_file_name => c.file_name, p_content => c.file_content ); end loop; -- finalizes the blob apex_zip.finish ( p_zipped_blob => b_zip_file ); end;
Anda dapat melihat pada kode di atas bahwa pada akhirnya, Anda akan mendapatkan BLOB
terakhir yang selanjutnya dapat Anda simpan dalam tabel atau kirimkan ke prosedur atau tulis file di server.
Contoh berikut adalah tambahan dari kode di atas. Setelah zip file, itu akan menulis file zip ke server.
Zip File menggunakan paket APEX_ZIP dan Tulis ke Server
Untuk menulis file di server, Anda memerlukan objek Direktori Oracle. Di bawah ini adalah contoh, cara membuat objek direktori di Oracle yang menunjuk ke direktori di server.
Create or Replace directory my_dir as '/your/server/path';
Setelah membuat direktori, Anda dapat menulis file zip seperti yang ditunjukkan pada contoh di bawah ini:
declare b_zip_file blob; -- variables for writing the files l_file UTL_FILE.file_type; l_buffer RAW (32767); l_amount BINARY_INTEGER := 32767; l_pos INTEGER := 1; l_blob_len INTEGER; -- end variable declaration for file cursor c_files is select file_name, file_content from emp_files where empno = 7894; begin for c in c_files loop -- adds the each blob to b_zip_file blob one by one apex_zip.add_file ( p_zipped_blob => b_zip_file, p_file_name => c.file_name, p_content => c.file_content ); end loop; -- finalizes the blob apex_zip.finish ( p_zipped_blob => b_zip_file ); -- write the file l_blob_len := DBMS_LOB.getlength (b_zip_file); l_file := UTL_FILE.fopen ('MY_DIR', 'my_zip.zip', 'WB', 32767); WHILE l_pos < l_blob_len LOOP DBMS_LOB.read (b_zip_file, l_amount, l_pos, l_buffer); UTL_FILE.put_raw (l_file, l_buffer, TRUE); l_pos := l_pos + l_amount; END LOOP; UTL_FILE.fclose (l_file); end;
Setelah menjalankan kode PL/SQL di atas, Anda akan menemukan file my_zip.zip
di MY_DIR
lokasi direktori di server.
Tutorial Terkait:
- Bagaimana Cara Mendapatkan BLOB dari File di PL/SQL?
- Bagaimana cara UNZIP File di PL/SQL?
Referensi:
- Panduan Oracle APEX_ZIP