找到的資料
用於向嵌入式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...