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

2021-10-04 12:33:34 字數 1490 閱讀 4816

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

------webkitformboundaryvwmsgij8xx3qdocw

content-disposition: form-data; name="username"

fengwusan

------webkitformboundaryvwmsgij8xx3qdocw

content-disposition: form-data; name="password"

123456

------webkitformboundaryvwmsgij8xx3qdocw

content-disposition: form-data; name="content"

------webkitformboundaryvwmsgij8xx3qdocw

content-disposition: form-data; name="file1"; filename="1.docx"

[byte資料]

----webkitformboundaryvwmsgij8xx3qdocw

content-disposition: form-data; name="file2"; filename="bd150998.zip"

[byte資料]

----webkitformboundaryvwmsgij8xx3qdocw--

可以看到很多分界線:----webkitformboundaryvwmsgij8xx3qdocw。multipart/form-data的資料報格式就是用分界線分割多個表單資料,而分界線附帶在請求資料庫的header資訊中,名稱叫做content_type,如果在iis中建立虛擬目錄cgi-bin,指向test.cgi所在目錄,更改iis上傳設定為1g:

rem 開啟cmd,執行:
進入站點根目錄,在web.config中的configuration/system.webserver加入security節點:

...

然後開啟http://localhost/test.html,新增5個30m左右的檔案,textarea裡加入一段超長的text檔案內容,比如163主頁的原始碼,然後post,本地上傳100mb,大概也就是3秒。

動態分配的記憶體就沒釋放了,僅僅是個測試,比如存放表單資料的cgi->forms最好是用hash表加array,因為input[type=checkbox]有多個同名form-data,這些最好放在乙個結構裡,同樣其他input也可以多個同名,還有cookie和session的支援、獲取單個表單值、對isapi的支援、對utf-8的支援、對urlencode的支援等等,都要考慮進去,要變成成品還有一段距離。

C語言CGI上傳檔案

找到的資料 用於向嵌入式linux系統上跑的簡單web服務上傳檔案 說一下原理 把檔案的post表單域安排在post資料流的最後部分,根據 content length的長度和post流的固定的資料格式,計算出上傳的檔案大小,然後從流中邊讀邊寫這個大小的資料存入檔案就可以了,因為表單 的提交直接是無...

C語言寫cgi,個人的cgi庫

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

c 語言讀取本地檔案

includeint readfile char buff fscanf 遇到第乙個空格和換行符時候 會停止讀取 fscanf fp,s buff printf 1 s n buff 函式 fgets 從 fp 所指向的輸入流中讀取 n 1 個字元。它會把讀取的字串複製到緩衝區 buf,並在最後追加...