線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:964
推到 Plurk!
推到 Facebook!

■■求能夠分解多部分(multipart)Post數據的C代碼■■

尚未結案
purple88
一般會員


發表:2
回覆:0
積分:0
註冊:2004-11-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-11 19:28:05 IP:221.226.xxx.xxx 未訂閱
我在用c++寫CGI程序,發現用C寫CGI的資料非常少見,  不象perl之類到處都有資料和基礎函數庫直接可以用。     現在寫到一個上傳文件的部分遇到疑問,網頁傳上的  格式是multipart/form-data的數據。     譬如我上傳一個tttt.bin文件,文件內容是數值0到0xff,  結果服務器接受的是如下的數據     ===============POST 598 Bytes===============      0: 2D 2D 2D 2D 2D 2D 2D 2D-2D 2D 2D 2D 2D 2D 2D 2D   ----------------     16: 2D 2D 2D 2D 2D 2D 2D 2D-2D 2D 2D 2D 2D 37 64 34   -------------7d4     32: 31 62 35 33 35 32 30 32-36 38 0D 0A 43 6F 6E 74   1b53520268 Cont     48: 65 6E 74 2D 44 69 73 70-6F 73 69 74 69 6F 6E 3A   ent-Disposition:     64: 20 66 6F 72 6D 2D 64 61-74 61 3B 20 6E 61 6D 65    form-data; name     80: 3D 22 46 49 4C 45 31 22-3B 20 66 69 6C 65 6E 61   ="FILE1"; filena     96: 6D 65 3D 22 43 3A 5C 44-6F 63 75 6D 65 6E 74 73   me="C:\Documents    112: 20 61 6E 64 20 53 65 74-74 69 6E 67 73 5C 70 75    and Settings\pu    128: 72 70 6C 65 5C D7 C0 C3-E6 5C 43 47 49 54 4F 4F   rple\  \CGITOO    144: 4C 53 5C 74 74 74 74 2E-62 69 6E 22 0D 0A 43 6F   LS\tttt.bin" Co    160: 6E 74 65 6E 74 2D 54 79-70 65 3A 20 61 70 70 6C   ntent-Type: appl    176: 69 63 61 74 69 6F 6E 2F-6F 63 74 65 74 2D 73 74   ication/octet-st    192: 72 65 61 6D 0D 0A 0D 0A-00 01 02 03 04 05 06 07   ream     208: 08 09 0A 0B 0C 0D 0E 0F-10 11 12 13 14 15 16 17        224: 18 19 1A 1B 1C 1D 1E 1F-20 21 22 23 24 25 26 27    !"#$%&'    240: 28 29 2A 2B 2C 2D 2E 2F-30 31 32 33 34 35 36 37   ()*+,-./01234567    256: 38 39 3A 3B 3C 3D 3E 3F-40 41 42 43 44 45 46 47   89:;<=>?@ABCDEFG    272: 48 49 4A 4B 4C 4D 4E 4F-50 51 52 53 54 55 56 57   HIJKLMNOPQRSTUVW    288: 58 59 5A 5B 5C 5D 5E 5F-60 61 62 63 64 65 66 67   XYZ[\]^_`abcdefg    304: 68 69 6A 6B 6C 6D 6E 6F-70 71 72 73 74 75 76 77   hijklmnopqrstuvw    320: 78 79 7A 7B 7C 7D 7E 7F-80 81 82 83 84 85 86 87   xyz{|}~€亗儎厗?         336: 88 89 8A 8B 8C 8D 8E 8F-90 91 92 93 94 95 96 97   垑妺實帍悜挀敃枟    352: 98 99 9A 9B 9C 9D 9E 9F-A0 A1 A2 A3 A4 A5 A6 A7   槞殯湞灍牎ⅲぅΗ    368: A8 A9 AA AB AC AD AE AF-B0 B1 B2 B3 B4 B5 B6 B7   īJ??氨渤吹斗    384: B8 B9 BA BB BC BD BE BF-C0 C1 C2 C3 C4 C5 C6 C7   腹夯冀究懒旅呐魄    400: C8 C9 CA CB CC CD CE CF-D0 D1 D2 D3 D4 D5 D6 D7   壬仕掏蜗醒矣哉肿    416: D8 D9 DA DB DC DD DE DF-E0 E1 E2 E3 E4 E5 E6 E7   刭谯茌捱噌忏溴骁    432: E8 E9 EA EB EC ED EE EF-F0 F1 F2 F3 F4 F5 F6 F7   栝觌祉铒瘃蝮趱鲼    448: F8 F9 FA FB FC FD FE 0D-0A 2D 2D 2D 2D 2D 2D 2D   X??? -------    464: 2D 2D 2D 2D 2D 2D 2D 2D-2D 2D 2D 2D 2D 2D 2D 2D   ----------------    480: 2D 2D 2D 2D 2D 2D 37 64-34 31 62 35 33 35 32 30   ------7d41b53520    496: 32 36 38 0D 0A 43 6F 6E-74 65 6E 74 2D 44 69 73   268 Content-Dis    512: 70 6F 73 69 74 69 6F 6E-3A 20 66 6F 72 6D 2D 64   position: form-d    528: 61 74 61 3B 20 6E 61 6D-65 3D 22 4F 4B 22 0D 0A   ata; name="OK"     544: 0D 0A C9 CF B4 AB 0D 0A-2D 2D 2D 2D 2D 2D 2D 2D        --------    560: 2D 2D 2D 2D 2D 2D 2D 2D-2D 2D 2D 2D 2D 2D 2D 2D   ----------------    576: 2D 2D 2D 2D 2D 37 64 34-31 62 35 33 35 32 30 32   -----7d41b535202    592: 36 38 2D 2D 0D 0A   68--     我知道這個boundary=---------------------------7d41b53520268  是分隔不同部分的分隔符  我要的文件數據就在name="FILE1"的這部分,  但是不曉得如何將不同部分分開來。  主要的問題在於,我只知道整個post上來的數據  是CONTENT_LENGTH = [598] 字節,但是不曉得其  中某一部分的長度,於是我就想,從post上來的數     據開始處不斷搜索分隔標記吧。但是又想到,如果  我post  的文件中也有一樣的標記(雖然概率很小)如何解決  衝突呢?  我想這種問題應該有成熟的解決方法吧,不會都寄希  望小概率事件不發生吧?  因此請教大家了,如果誰有支持C語言寫CGI的基礎  函數庫也請大家告訴一句,很想讀讀別人的代碼,  徹底自己摸索太累哦
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-11 21:59:16 IP:221.169.xxx.xxx 未訂閱
http://www.cgicc.org/ 去看看吧 cgicc 這個東東可以符合你要的。它也有 c builder5.0 的支援
系統時間:2024-11-22 12:45:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!