0

自動化された電子メールを生成する Oracle Apex アプリケーションがあります。Apex では、ユーザは JPG 画像をリッチ テキスト フィールドに挿入します。そのイメージは CLOB フィールドに保存されます。ストアド プロシージャが呼び出されると、JPG イメージが読み取られ、l_image_clob というローカル変数に格納されます。プログラムは、埋め込み画像 (注: これは埋め込み画像であり、電子メールの添付ファイルではありません) を電子メール本文の残りの部分と共にユーザーのリストに送信します。それはすべてうまくいっています。
今、l_image_clob に保存されている JPG 画像の内容を Windows サーバー上の JPG ファイルに保存しようとしています。次のコードは、適切な名前とサイズのファイルを生成しますが、システムで読み取ることはできません。Microsoft ペイントで開こうとすると、「これは有効なビットマップ ファイルではありません」というエラーが表示されます。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); 

これを見てくれてありがとう。

4

1 に答える 1