■■求能夠分解多部分(multipart)Post數據的C代碼■■ |
尚未結案
|
purple88
一般會員 發表:2 回覆:0 積分:0 註冊:2004-11-11 發送簡訊給我 |
我在用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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |