我有一个生成自动电子邮件的 Oracle Apex 应用程序。在 Apex 中,用户将 JPG 图像插入富文本字段。该图像被保存到 CLOB 字段中。调用存储过程时,它会读取 JPG 图像并将其存储到名为 l_image_clob 的局部变量中。该程序将嵌入的图像(注意:这是一个嵌入的图像,它不是电子邮件附件)与电子邮件正文的其余部分一起发送到用户列表。这一切都很好。
现在我正在尝试将存储在 l_image_clob 中的 JPG 图像的内容保存到 Windows 服务器上的 JPG 文件中。以下代码生成一个文件,该文件命名正确且大小正确,但系统无法读取。当我尝试使用 Microsoft Paint 打开它时,我收到错误“这不是一个有效的位图文件”。如何使用 utl_file 来执行此操作?
Here's the code which creates the file that is "not a valid bitmap file"
-- Create a file based on the content of l_image_clob
l_image_filename := 'image_' || p_event_pkey || '_' || i ||
'.' || l_image_ext;
l_file_handle := utl_file.fopen(l_dirname , l_image_filename, 'wb');
-- wb is write byte. This returns file handle
<<inner_loop>>
for i in 1 .. ceil( length( l_image_clob ) / chnksz )
loop
utl_file.put_raw( l_file_handle,
utl_raw.cast_to_raw( substr( l_image_clob, (i-1) * chnksz + 1, chnksz )));
utl_file.fflush(l_file_handle);
end loop inner_loop;
utl_file.fclose(l_file_handle);
谢谢你看这个。