在 base64 中使用 plsql 将表格中的图像打印到 html 不起作用



我可能有点夸张了标题,但当某些东西有时有效时,我认为它不起作用。

基本上我是存储在一个表图像使用3列。

  • IMAGE_RIGHT BLOB(用于存储图像)
  • mimeype_right VARCHAR2(50 BYTE)(用于存储mimetype)
  • NOM_IMAGE_RIGHT VARCHAR2(255字节)(用于存储文件名)

这就是我如何显示图像的

if V_IMAGE_RIGHT is not null then
BEGIN
htp.p('<img style="float: right;" src="data:' || v_mimetype_right || ';base64,' || apex_web_service.blob2clobbase64(v_image_right) || '" height="100px">');
exception
when others then
htp.p('Err : ' || SQLERRM);
END; 
end if;

在大多数情况下,它工作,与svgs,但有时有些文件似乎不工作,我得到这个错误">ORA-06502: PL/SQL"。

我尝试用我的一个没有工作的图像来获得它的内容在base64做一个选择查询,然后我创建了一个html文件来打印图像也通过使用base64内容,它在我的html文件上工作,但同样的过程自动化我的程序不工作。

成功了。正如Alex Poole的评论所说。P有32k字符的限制。

我就是这样做的。

首先我创建了这3个变量:

v_offset     INTEGER := 1;
v_chunk_size INTEGER := 32000;
v_chunk      VARCHAR2(32000);

然后改变了我显示图像的方式:

if V_IMAGE_LEFT is not null then
BEGIN
htp.p('<img src="data:' || v_mimetype_left || ';base64,');
WHILE v_offset <= LENGTH(v_image_left) LOOP
v_chunk := SUBSTR(v_image_left, v_offset, v_chunk_size);

-- afficher chaque segment à l'aide de HTP.P
HTP.P(v_chunk);

v_offset := v_offset + v_chunk_size;
END LOOP;
htp.p('" height="100px">');
END;    
end if;

最新更新