기타 API
1. wbSaveFile
wbSaveFile은 파일의 Upload를 위한 함수이다.
클라이언트가 서버에 파일을 전송 하기 위해 사용하는 함수로 이 함수는 wbPutFile()와 마찬가지로 웹에서 자료를 공유하고자 할 때 필요하다. wbSaveFile()은 클라이언트의 파일을 서버의 Physical Path를 지정하여 이곳으로 클라이언트가 전송하게 된다.
-
프로토타입
#include <wbapi.h> #include <atmi.h> int wbSaveFile(WBSVCINFO *rqst, char *key, char *path)
-
반환값
함수가 정상적으로 수행될 경우 wbSaveFile()은 1을 반환한다. 에러가 발생하는 경우는 –1을 반환한다.
-
예제
<savefile.m>
*DOMAIN webtob1 *NODE tmaxh1 WEBTOBDIR="/user2/haninho/webtob", SHMKEY = 54777, DOCROOT="/user2/haninho/webtob/docs", APPDIR="/user2/haninho/webtob/ap", PORT = “7654” *SVRGROUP htmlg NODENAME = "tmaxh1", SvrType = HTML webapg NODENAME = "tmaxh1", SVRTYPE = WEBSTD *SERVER html SVGNAME = htmlg, MinProc = 1, MaxProc =2 savefile SVGNAME = webapg, MinProc = 1, MaxProc = 2, *SERVICE test SVRNAME = savefile *URI wbapi Uri = "/svct/", Svrtype = WEBSTD *EXT htm MimeType = "text/html", SvrType = HTML
-
환경파일 (Config-file)을 컴파일한다.
$ wscfl –I savefile.m
-
서비스 테이블을 생성한다.
$ wsgst
-
Source파일을 생성한다.
다음은 요청을 보내는 html 파일의 예제이다.
<savefile.html>
<HTML> <TITLE> wbSaveFile() Test </TITLE> <BODY> <H2> wbSaveFile TEST </H2> <FORM METHOD=post ACTION="/svct/test" enctype='multipart/form-data'> <B>FILE UPLOAD</B> <TABLE WIDTH=650 BGCOLOR=#DDDDDD> <TR> <TD><SMALL><B>file</B></SMALL></TD> <TD><INPUT TYPE=file NAME=upfile SIZE=35></TD> </TR> <TR> <TD><INPUT TYPE=submit VALUE="upload"></TD> </TR></TABLE> </FORM> </BODY> </HTML>
다음은 요청을 처리하는 WBAPI 프로그램 예제이다.
<savefile.c>
#include <stdio.h> #include <usrinc/atmi.h> #include <usrinc/wbapi.h> test(WBSVCINFO *rqst) { char *temp, *filedata, *filename, path[255]; long filelen; int k, count, rtn; FILE *fp; count = wbGetDataCount(rqst); fprintf(stdout,"datacount=%d\n\n",count); for(k=1; k<=count; k++) { temp = wbGetNthKey(rqst, k); fprintf(stdout,"key=%s\n",temp); filedata=wbGetData(rqst, temp); if (filedata != NULL) fprintf(stdout,"data=%s\n",filedata); if((filename=wbGetFileName(rqst, temp)) != NULL) { fprintf(stdout,"key=%s\n",temp); fprintf(stdout,"filename=%s\n",filename); filelen = wbGetFileLen(rqst, temp); fprintf(stdout,"filelength=%ld\n",filelen); sprintf(path, "/user2/haninho/webtob/sample/data/%s", filename); unlink(path); rtn = wbSaveFile(rqst, temp, path); fprintf(stdout,"rtn=%d\n\n",rtn); if( rtn < 0 ) wbPrint(rqst, "File(%s) Upload failed!!\n", filename); else wbPrint(rqst, "File(%s) Upload Success!!<br>\n", filename); } else { filedata=wbGetData(rqst, temp); fprintf(stdout,"key=%s\n",temp); fprintf(stdout,"data=%s\n\n",filedata); wbPrint(rqst, "Key = %s, Data = %s <br>\n\n",temp ,filedata); } } wbReturn(rqst,WBSUCCESS); }
-
WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.
$compile c savefile
-
다음은 결과가 출력된 화면으로 서비스를 요청하는 html 이다.
브라우저로 WBAPI 서비스를 요청하면 다음과 같은 결과가 나온다.
-
2. wbGetErrno
wbGetErrno는 WBAPI 서비스의 에러 번호를 반환한다.
wbGetErrno()는 WebtoB 사용자가 에러 상황을 정확하게 알 수 있도록 해주는 함수로 “atmi.h” 헤더파일에 설정된 에러 상황을 알려준다.
-
프로토타입
#include <wbapi.h> #include <atmi.h> int wbGetErrno()
-
반환값
함수가 정상적으로 수행될 경우 에러 번호를 반환한다.
-
예제
<geterrno.m>
*DOMAIN webtob1 *NODE tmaxh1 WEBTOBDIR="/user2/haninho/webtob", SHMKEY = 54777, DOCROOT="/user2/haninho/webtob/docs", APPDIR = "/user2/haninho/webtob/ap", PORT = "7654" *SVRGROUP htmlg NODENAME = "tmaxh1", SvrType = HTML webapg NODENAME = "tmaxh1", SvrType = WEBSTD *SERVER html SVGNAME = htmlg, MinProc = 1, MaxProc = 2 geterrno SVGNAME = webapg, MinProc = 1, MaxProc = 2 *SERVICE test SVrname= geterror *URI uri1 uri = "/svct/", SvrType = WEBSTD *EXT htm MimeType = "text/html", SvrType = HTML
-
환경파일 (Config-file)을 컴파일한다.
$ wscfl –i geterrno.m
-
서비스 테이블을 생성한다.
$ wsgst
-
소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 geterrno.c이다.
#include <stdio.h> #include <usrinc/atmi.h> #include <usrinc/wbapi.h> test(WBSVCINFO *rqst) { int result; int rnt; int date; wbPrint(rqst, "<HTML>\n"); wbPrint(rqst, "<BODY>\n"); result = wbGetErrno(); wbPrint(rqst, "wbGetErrno() : %d<br>\n",result); date = wbGetDateHdr(rqst, "Modified-Since"); if(date == -1) { result = wbGetErrno(); wbPrint(rqst, "wbGetDateHdr() is failed<br>\n"); wbPrint(rqst, "wbGetErrno() : %d<br>\n", result); } wbPrint(rqst, "</HTML></BODY>"); wbReturn(rqst, WBSUCCESS); }
-
WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.
$ compile pc geterrno
-
다음은 결과가 출력된 화면이다.
브라우저로 WBAPI 서비스를 요청하면 다음과 같은 결과가 나온다.
-