このパッケージは、ファイルの圧縮および解凍を管理します。
このプロシージャは、単一のファイルをzipファイルに追加します。
|
注意: すべてのファイルを追加した後に、APEX_ZIP.FINISHをコールする必要があります。 |
構文
APEX_ZIP.ADD_FILE (
p_zipped_blob IN OUT NOCOPY BLOB,
p_file_name IN VARCHAR2,
p_content IN BLOB );
パラメータ
表28-1 ADD_FILEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
zipファイルを格納しているBLOB。 |
|
|
zipファイルに追加するファイルのファイル名(パスを含む)。 |
|
|
ファイルを格納しているBLOB。 |
例
この例では、表から複数のファイルを読み取り、単一のzipファイルに格納します。
declare
l_zip_file blob;
begin
for l_file in ( select file_name,
file_content
from my_files )
loop
apex_zip.add_file (
p_zipped_blob => l_zip_file,
p_file_name => l_file.file_name,
p_content => l_file.file_content );
end loop;
apex_zip.finish (
p_zipped_blob => l_zip_file );
end;
このプロシージャは、APEX_ZIP.ADD_FILEでファイルを追加した後に、zipファイルの作成を完了します。
構文
APEX_ZIP.FINISH (
p_zipped_blob IN OUT NOCOPY BLOB );
パラメータ
例
例は、「ADD_FILEプロシージャ」を参照してください。
このファンクションは、指定されたzipファイルに格納されたファイルのBLOBを戻します。
構文
APEX_ZIP.GET_FILE_CONTENT (
p_zipped_blob IN BLOB,
p_file_name IN VARCHAR2,
p_encoding IN VARCHAR2 DEFAULT NULL )
RETURN BLOB;
パラメータ
表28-3 GET_FILE_CONTENTファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
これはzipファイルを格納しているBLOBです。 |
|
|
zipファイルに含まれるファイルのファイル名(パスを含む)。 |
|
|
ファイルの圧縮に使用されるエンコーディング。 |
戻り値
例
例は、「GET_FILESファンクション」を参照してください。
このファンクションは、BLOBを格納している指定されたzipファイルのファイル名(パスを含む)の配列を戻します。
構文
APEX_ZIP.GET_FILES (
p_zipped_blob IN BLOB,
p_only_files IN BOOLEAN DEFAULT TRUE,
p_encoding IN VARCHAR2 DEFAULT NULL )
RETURN t_files;
パラメータ
表28-5 GET_FILESファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
これはBLOBを格納しているzipファイルです。 |
|
|
|
|
|
これはファイルの圧縮に使用されるエンコーディングです。 |
戻り値
例
この例では、表からzipファイルを読み取り、解凍してzipファイルの全ファイルをmy_filesに格納します。
declare
l_zip_file blob;
l_unzipped_file blob;
l_files apex_zip.t_files;
begin
select file_content
into l_zip_file
from my_zip_files
where file_name = 'my_file.zip';
l_files := apex_zip.get_files (
p_zipped_blob => l_zip_file );
for i in 1 .. l_files.count loop
l_unzipped_file := apex_zip.get_file_content (
p_zipped_blob => l_zip_file,
p_file_name => l_files(i) );
insert into my_files ( file_name, file_content )
values ( l_files(i), l_unzipped_file );
end loop;
end;