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

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

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

分享一点代码(小型C web开发框架)共11篇章 (含全部源代码),范例:用C语言实现的一个WEB 文件上传
本帖最后由 a215318036 于 2011-06-17 10:59:02 编辑 分享一点代码(小型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开发框架代码下载
 

[解决办法]
C语言的WEB
[解决办法]
超人啊
[解决办法]
飞机中的战斗机啊
[解决办法]
看不懂
[解决办法]
很好,很强大
[解决办法]
不懂,帮顶
[解决办法]
看一下了
[解决办法]
小巧精致
------解决方案--------------------


先收藏
[解决办法]
支持,支持
[解决办法]
Mark!
[解决办法]
分享1点代码(小型C web开发框架)共11篇章 (含全部源代码),范例:用C语言实现的一个WEB 文件上传
[解决办法]

引用:
飞机中的战斗机啊

网页上传中的战斗机!

[解决办法]
好,學習.
[解决办法]
学习。。。感谢分享
[解决办法]
额。。。。。学习
[解决办法]
牛叉啊
[解决办法]
mark
[解决办法]
有开源精神
[解决办法]
收藏了,谢谢!
[解决办法]
额。。。。。不错
[解决办法]
只有想不到的,没做不到的
[解决办法]
mark
[解决办法]
支持开源

热点排行