How to display the text and images from Oracle databases on the web
since 19 May, 1999 last modified 19 May, 1999


Á¶°Ç Condition

Unix(AIX)»ó¿¡¼­ ¿î¿ëµÇ´Â Oracle 7.3 Database¿¡ ÀÇÇÏ¿© Record¿Í °ü·Ã Image°¡ °ü¸®µÇ°í ÀÖ´Ù (CATIA CDM Database ±¸Á¶). Web Service´Â MS IIS 4.0¿¡ ÀÇÇÏ¿© Windows NTȯ°æ¿¡¼­ ¿î¿ë µÇ°í ÀÖÀ¸¸ç Databases´Â ODBC¸¦ ÀÌ¿ëÇÏ¿© Active Server PageÀÇ Application Logic¿¡ ¿¬°áµÇ¾î ÀÖ´Ù. ÀÌ »óȲ¿¡¼­ Record¿Í Image¸¦ µ¿½Ã¿¡ WebÀ» ÅëÇÏ¿© Á¦°øÇÏ¿©¾ß ÇÑ´Ù.

Image DataÀÇ ÀúÀå

Image´Â OracleÀÇ Long Raw TypeÀ¸·Î ÀúÀåµÇ¾î ÀÖ´Ù. ÀÌ´Â OracleÀÇ ProC¸¦ ÀÌ¿ëÇÑ ApplicationÀ» ÅëÇÏ¿© ÃßÃâÇÒ ¼ö ÀÖÀ¸¸ç ƯÈ÷ CDMÀÇ Long Filed TypeÀº ÀÚüÀÇ Æ¯º°ÇÑ Data ±¸Á¶¸¦ °¡Áö°í ÀÖÀ¸¹Ç·Î À̸¦ ÃßÃâÇÏ´Â ApplicationÀÌ ÇÊ¿äÇÏ´Ù.(ÂüÁ¶)

Image DataÀÇ Web Server·Î Retrieval

ODBC¸¦ ÀÌ¿ëÇÏ¿© ASP ¿¡¼­ Retrieval Logic °³¹ß :- Long Raw TypeÀÇ ODBC Áö¿ø ºÒÈ®½Ç, ½ÃÇè½Ã System hangÀÌ ÀϾÀ½. => ODBCÀÇ Long Raw Type Áö¿ø È®ÀÎ ¿ä

Image Server ¿ë Unix Web Server (httpd) µµÀÔ

ODBC¸¦ ÅëÇØ IIS¿¡ Image Retrieval Logic ±¸ÇöÀÌ ºÒ°¡ÇÔ¿¡ µû¶ó Image¸¸ ¼­ºñ½º ÇÒ ¼ö ÀÖ´Â AIX ¿ë Web Server µµÀÔ, ÇØ´ç Web Server´Â getimg.cgi ÇÁ·Î±×·¥À¸·Î OracleÀÇ Image Data¸¦ MIME type header¸¦ Æ÷ÇÔÇÏ¿© Á÷Á¢ (Àӽà ÆÄÀÏÀ» ¸¸µéÁö ¾Ê°í) ¼­ºñ½ºÇÏ´Â ±â´ÉÀ» ÇÑ´Ù. ÀÌ´Â Oracle ÀÇ ProC¸¦ ÀÌ¿ëÇÏ¿© ÀÛ¼ºµÇ¾ú´Ù(¾Æ·¡ getimg.pc ÂüÁ¶).

/* ---- getimage.pc ---- */
main()
{
....
/* MIME Type Header Define */
 printf("Content-type: image/gif %c%c",10,10); 
 get_image(input_str);
....
}

/*-------------------------------*/
/*      get image from DB               */

void get_image(input_part)
char input_part[15];
{
  char s_pname[15];
  long_varraw lvr; /* For Long Raw Type */
  short ind;
  EXEC SQL VAR s_pname is string(15);
  EXEC SQL declare key_cursor cursor for

SELECT  d."$DATA"
 INTO :s_pname, :recno, :seqno,:lvr :ind
 FROM pns.part_list a, pns.document b, pns."$EXT_LF" c, pns.LF00001 d

 WHERE
 a.s_pname = :input_part AND
 a."$COID"=b."$COID" AND
 b."$COID"=c."$COID" AND
 d."$COID" = SUBSTR(c."$CUR_ACC_MET_DATA",55,16) AND
 d."$COMPID" = SUBSTR(c."$CUR_ACC_MET_DATA",71,16);

  EXEC SQL open key_cursor;

  while (1)
  {
	EXEC SQL whenever not found do break;
	EXEC SQL fetch key_cursor into :s_pname, :recno, :seqno, :lvr :ind;
	 /* Write Binary Data into STDOUT */
	 fwrite(lvr.buf+4, sizeof(char), lvr.len-4, stdout);
  }
....
}

TextÁ¤º¸¿Í ImageÁ¤º¸ÀÇ Display

TextÁ¤º¸¸¦ ¸¸µå´Â ASP ¿¡ <IMG> ¸¦ »ç¿ëÇÏ¹Ç·Î½á µÎ Á¤º¸°¡ µ¿½Ã¿¡ DisplayµÇµµ·Ï ÀÛ¼ºÇÏ¿´´Ù(¾Æ·¡ gettxt.asp ÂüÁ¶).

....
<%
pns_name=Request("pns_name")
Response.Write("<BR>"+pns_name)
%>
<IMG SRC="http://157.171.182.69/cgi-bin/getimg.cgi?<%=pns_name%>">
....



Korean Engineering Databases © copyright Namchul Do, 1999