C語言CGI上傳檔案

2021-06-28 03:47:23 字數 1615 閱讀 7900

找到的資料

用於向嵌入式linux系統上跑的簡單web服務上傳檔案

說一下原理

把檔案的post表單域安排在post資料流的最後部分,根據 content_length的長度和post流的固定的資料格式,計算出上傳的檔案大小,然後從流中邊讀邊寫這個大小的資料存入檔案就可以了,因為表單 的提交直接是無法直接用ajax操作的所以使用iframe方式來動態更新上傳狀態,可以在此基礎上做個上傳進度條

在minihttpd環境下測試成功,隨便傳個幾十兆很輕快

// /cgi/upload.c

#include

#include

#include

typedef enumup_status;

#define debug(x...) fprintf(stderr,x)

intmain(intargc,char* argv)

strcpy(fname,strrchr(fname,'\\')+1);

p=strchr(fname,'\"');

*p='\0';

debug("*upload file %s\n",fname);

break;}}

}fgets(str,512,stdin);

pos+=strlen(str);

fgets(str,512,stdin);

pos+=strlen(str);

intfsize=len-pos-strlen(boundary)-6;

debug("*file size %d\n",fsize);

intbsize=4096;

//open file for writing

charfpath[256]="";

strcat(fpath,updir);

strcat(fpath,fname);

debug("write to %s\n",fpath);

file*f=fopen(fpath,"wb");

if(!f)

//chunk read

intchunk=fsize/bsize;

debug("chunk=%d\n",chunk);

intlbsize=fsize%bsize;

debug("lbsize=%d\n",lbsize);

void* buf=malloc(bsize);

inti;

for(i=0;i\

\n\\n   ");if(up_s==up_show)printf("\

\n   \

\n   \

\n   ");

return1;

}

C語言cgi解析上傳檔案的本地測試

首先用瀏覽器提交提交乙個multipart form data型別的資料報到本地伺服器,隨便用什麼指令碼寫個接受資料報的程式,儲存資料報到檔案,資料報的格式大概就是這樣 webkitformboundaryvwmsgij8xx3qdocw content disposition form data ...

C語言寫cgi,個人的cgi庫

cgi程式可以用c c perl等多種語言編寫。本文以乙個最簡單的表單提交和cgi處理為例,示範了如何使用c語言編寫處理表單的cgi程式,這裡的有本人寫的乙個很小的cgi庫 一些相關的函式。更多關於cgi的背景知識,網上有很多介紹。表單頁面 如下 自製的cgi庫cgilib的標頭檔案 ifndef ...

C語言進行CGI程式設計

一 cgi概述 cgi 公用閘道器介面 規定了web伺服器呼叫其他可執行程式 cgi程式 的介面協議標準。web伺服器通過呼叫cgi程式實現和web瀏覽器的互動,也就是cgi程式接受web瀏覽器傳送給web伺服器的資訊,進行處理,將響應結果再回送給web伺服器及web瀏覽器。cgi程式一般完成web...