IIS7/8用のネイティブモジュールを、特定の拡張子を持つIISに入ってくるファイルのアップロードを拒否する目的でC++で作成しています。マルチフォームMIMEタイプのコンテンツ処理フィールドを解析する
私はOnReadEntityを使用してモジュールを稼働させ、ファイルをアップロードする投稿要求に対して要求の本文を見ることができます。
しかし、C++には慣れていないので、どのようにファイル名をすべて取得できるように、要求本文からContent-Dispositionフィールドを確実に解析すると思いますか。以下は
例要求です:すでに私のためにこれを行うにはhttpserv.h APIの何かがある場合
------WebKitFormBoundaryUomVPwKHGvBwvDhP
Content-Disposition: form-data; name="attach1"; filename="YSMIsapiFilter.sln"
Content-Type: text/plain
SomeDataHere
------WebKitFormBoundaryUomVPwKHGvBwvDhP
Content-Disposition: form-data; name="attach2"; filename="ysmISAPIFilter.log"
Content-Type: application/octet-stream
I AM A LOG
------WebKitFormBoundaryUomVPwKHGvBwvDhP
Content-Disposition: form-data; name="enter_a_number"
------WebKitFormBoundaryUomVPwKHGvBwvDhP--
ol: max-age=0
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Cookie: ASPSESSIONIDSSSRCTRS=GHMFFGABJAAOAEHFCFIOOJIO
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36
Upgrade-Insecure-Requests: 1
誰もが知っています。または、Visual Studio 2015でビルドするこれを行う非営利のMIMEタイプのパーサーが無料である場合。
それとも、自分で解析する必要がありますか。
------で始まる行の後に、Content-Dispositionとcontent-typeは常に2行目と3行目でなければなりません。webkitformBoundaryは、 Chrome、FireFoxなど)が含まれます。それから私はちょうど次のものにスキップする必要があります。
Content-Dispositionは、RFC仕様では常にフォームデータとなります。続いてフォームフィールド "attach1"の名前が続き、タイプ "file"の入力の場合はその入力 "filename"と一緒に移動するデータが続きます。
ちょうどこの方向の正しい方向の点を探しています。
私は既にMimeticを使ってみましたが、プロジェクトにヘッダーを追加するとビルドできませんでした。それに付属のWin32プロジェクトはビルドされていますが、私のビルドには組み込まれません。