1.2 一种更亲切的CGI开发系统WinCGI
接下来的[Form Literal]区包含有经过解码的数据。原本格式为:key=value&key=value&...的数据经过解码后被存放于这个区,但是一些例外的情况就要使用[Form External]和[Form Huge]区。在[Form External]区中数据格式如同:key=pathname length,当上传的字符串长度大于254时,就会使用这个区,pathname指明了包含被解码后的字符存放的文件,length为字符串长度。当上传的数据长度大于64K时,数据会被存放入一个独立的文件,该文件的文件名称由[System]区中的Content File关键字指明。[Form Huge]区中数据格式如同:key=offset length其中offset为该数据在文件中的起始位置,length为数据的长度。
下面有一个例子:设输入为,a_cgi_sample.exe?name=your_name&email=your@mail.com&memo=length_gt_254
则文件中包含数据的几个区形式如下:
[Form Literal]
name=your_name
email=your@mail.com
[Form External]
;假设memo字段长度为500
memo=a_temp_file 500
最后给出一个WinCGI程序的伪代码轮廓:
void main(int argc,char** argv)
{
if(argc == 1)
error raise; //无法得到配置文件
char szCfgFile[]=argv[1];
Read [Form Literal] section for input data
char szOutFile[]=Read "Output File" key from [System] section;
fopen(szOutFile)
{
write result to outFile
close outFile
}
return ;//退出
}
总的说来,WinCGI程序与普通CGI的程序的区别不大,只是在输入输出的方法上略有区别。