자동화 된 전자 메일을 생성하는 Oracle Apex 애플리케이션이 있습니다. Apex에서 사용자는 서식있는 텍스트 필드에 JPG 이미지를 삽입합니다. 그 이미지는 CLOB 필드에 저장됩니다. 저장 프로 시저가 호출되면 JPG 이미지를 읽고이를 l_image_clob라는 로컬 변수에 저장합니다. 프로그램은 임베디드 이미지 (참고 : 임베디드 이미지이며 이메일 첨부 파일이 아님)와 나머지 이메일 본문을 사용자 목록에 보냅니다. 그게 다 잘되고있어.
이제 l_image_clob에 저장된 JPG 이미지의 내용을 Windows 서버의 JPG 파일에 저장하려고합니다. 다음 코드는 제대로 명명 된 파일을 생성하고 크기는 정확하지만 시스템에서 읽을 수는 없습니다. Microsoft Paint로 열려고하면 "이것은 유효한 비트 맵 파일이 아닙니다"라는 오류 메시지가 나타납니다. 어떻게 utl_file을 사용합니까?오라클 utl_file을 사용하여 이미지 clob을 작성하는 방법
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);
감사합니다.