首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > 高性能WEB开发 >

分享一点代码(小型C web开发框架)共11篇章 (含全部源代码),范例:用C语言实现的一个WEB 文件下传

2013-01-04 
分享一点代码(小型C web开发框架)共11篇章 (含全部源代码),范例:用C语言实现的一个WEB 文件上传分享一点代

分享一点代码(小型C web开发框架)共11篇章 (含全部源代码),范例:用C语言实现的一个WEB 文件上传
分享一点代码(小型C web开发框架)共11篇章 (含全部源代码),范例:用C语言实现的一个WEB 文件上传
在 windows IIS Apache linux Apache IE Firefox 均测试通过
编译:用Vs2008和GCC 均可编译
共11篇章 (含全部源代码),欢迎各位专家,高手指正!

#include "cgic.h"

#define BufferLen 1024
int cgiMain(void){
  int i = 0;
  char fn[1024];
  char type[1024];
  char name[1024];
  char **responses;

  cgiFilePtr file;
  FILE *fp;
  int targetFile;
  char fileNameOnServer[64];
  char contentType[1024];
  char buffer[BufferLen];
  char *tmpStr=NULL;
  int size;
  int got,t;
  cgiHeaderContentType("text/html");
  fprintf(cgiOut, "<title>C WEB</title>\n");
  fprintf(cgiOut, "<h1>C语言开发</h1>\n");

  fprintf(cgiOut, "<br>cgiServerSoftware %s \n", cgiServerSoftware);
  fprintf(cgiOut, "<br>cgiServerName %s \n", cgiServerName);
  fprintf(cgiOut, "<br>cgiGatewayInterface %s \n", cgiGatewayInterface);
  fprintf(cgiOut, "<br>cgiServerProtocol %s \n", cgiServerProtocol);
  fprintf(cgiOut, "<br>cgiServerPort %s \n", cgiServerPort);
  fprintf(cgiOut, "<br>cgiRequestMethod %s \n", cgiRequestMethod);
  fprintf(cgiOut, "<br>cgiPathInfo %s \n", cgiPathInfo);
  fprintf(cgiOut, "<br>cgiPathTranslated %s \n", cgiPathTranslated);
  fprintf(cgiOut, "<br>cgiQueryString %s \n", cgiQueryString);
  fprintf(cgiOut, "<br>cgiRemoteHost %s \n", cgiRemoteHost);
  fprintf(cgiOut, "<br>cgiRemoteAddr %s \n", cgiRemoteAddr);
  fprintf(cgiOut, "<br>cgiAuthType %s \n", cgiAuthType);
  fprintf(cgiOut, "<br>cgiRemoteUser %s \n", cgiRemoteUser);
  fprintf(cgiOut, "<br>cgiRemoteIdent %s \n", cgiRemoteIdent);
  fprintf(cgiOut, "<br>cgiContentType %s \n", cgiContentType);
  fprintf(cgiOut, "<br>cgiAccept %s \n", cgiAccept);
  fprintf(cgiOut, "<br>cgiUserAgent %s \n", cgiUserAgent);
  fprintf(cgiOut, "<br>cgiReferrer %s \n", cgiReferrer);

  cgiFormString( "fn", fn , sizeof( fn ) );
  cgiFormString("type", type, sizeof( type ));  
  cgiFormString("name", name, sizeof( name ));  
  fprintf( cgiOut , "<br/>fn:" );
  fprintf( cgiOut , fn );

  fprintf( cgiOut , "<br/>type:" );
  fprintf( cgiOut , type );

  fprintf( cgiOut , "<br/>name:" );
  fprintf( cgiOut , name );

  if(strcmp(cgiRequestMethod, "GET")==0)
  {
  fprintf(cgiOut, "<form target='_blank' method='post' enctype='multipart/form-data' > ");
  fprintf(cgiOut, " <input name='file' id='file' type='file' /> <input name='submit' type='submit' /> ");


  fprintf(cgiOut, "</form>");
  }
  else
  {
  if (cgiFormFileName("file", name, sizeof(name)) !=cgiFormSuccess) {
  fprintf(stderr,"could not retrieve filename\n");
  goto FAIL;
  }
  cgiFormFileSize("file", &size);
  cgiFormFileContentType("file", contentType, sizeof(contentType));

  if (cgiFormFileOpen("file", &file) != cgiFormSuccess) {
  fprintf(stderr,"could not open the file\n");
  goto FAIL;
  }
  t=-1;
  while(1){
  tmpStr=strstr(name+t+1,"\");
  if(NULL==tmpStr)
  tmpStr=strstr(name+t+1,"/");//if "\" is not path separator, try "/"
  if(NULL!=tmpStr)
  t=(int)(tmpStr-name);
  else
  break;
  }
  strcpy(fileNameOnServer,name+t+1);
  if((fp=fopen(fileNameOnServer, "wb+"))==NULL)
  {
  fprintf(stderr,"could not create the new file,%s\n",fileNameOnServer);
  goto FAIL;
  }

  //if( (fp = fopen(fileNameOnServer, "rb+"))==NULL) ){
  // fprintf(stderr,"could not create the new file,%s\n",fileNameOnServer);
  // goto FAIL;
  //}
  //Read the content from the tmp file, and write it into the newly created file.
  while (cgiFormFileRead(file, buffer, BufferLen, &got) ==cgiFormSuccess){
  if(got>0)
  fwrite(&buffer, BufferLen, 1, fp);
  //write(file,buffer,got);
  //write(fp,buffer,got);
  }
  cgiFormFileClose(file);
  fclose(fp);
  goto END;
  FAIL:
  fprintf(stderr,"Failed to upload");
  return 1;
  END:
  fprintf(cgiOut, "<form target='_blank' method='post' enctype='multipart/form-data' > ");
  fprintf(cgiOut, " <input name='file' id='file' type='file' /> <input name='submit' type='submit' />");
  fprintf(cgiOut, "</form><br/>");

  printf("恭喜您!File "%s" has been uploaded",fileNameOnServer);
  printf("<br/><img src="/dialog/%s" />",fileNameOnServer);
  return 0;
  }
}

限于篇幅其余代码请下载地址:C语言Web开发框架代码下载
 
[解决办法]
收藏,帮顶
[解决办法]
帮顶下。。。。
[解决办法]
先编译一下看看在说
[解决办法]
顶一下, 呵呵(PS: 留下个脚印)
[解决办法]
问一下, 与cgic(http://www.boutell.com/cgic/)比较怎样?

热点排行