0

HTTP Web サーバーを作成しています。サーバーは Http マルチパート リクエストを処理する必要があります。以前の実装では、リクエストのすべての部分に存在するコンテンツ長ヘッダーを使用してデータを抽出していました。私が使用していたクライアントは、マルチパート リクエストのすべてのパート (ファイル) で content-length ヘッダーを提供します。

しかし、別のクライアントは、各ファイルのコンテンツの長さを提供していません。私の実装では、 content-length ヘッダーを使用してそのバイト数を抽出し、ファイルに保存しています。

今すぐデータを抽出する方法を教えてください。

私が今得ているヘッダーは次のとおりです。

POST xxxxxxxxxxxxxxxxxxxxxxx&currentTab=PHOTOxxxxxxxxxxxxxxxx HTTP/1.1
Content-Length: 6829
Content-Type: multipart/form-data; boundary=SnlCg9JqTpQIl6t_mPzByTjZ8bD24kUj; charset=UTF-8
Host: host
Connection: Keep-Alive
User-Agent: Apache-HttpClient/xxxxxxxx
Accept-Encoding: gzip

--SnlCg9JqTpQIl6t_mPzByTjZ8bD24kUj
Content-Disposition: form-data; name="file"; filename="imagesCA5L2CL6_jpg(2)_jpg.jpg"
Content-Type: photo/jpg

**Some Data byte array**
--SnlCg9JqTpQIl6t_mPzByTjZ8bD24kUj--

このリクエストでは、part データに content-length ヘッダーが含まれるようになりました。

編集:

以前、このクライアントはすべての部分で content-length ヘッダーを送信していました。しかし、何らかの理由で、それはもう送信されていません。誰でもその理由を提案できますか。

ありがとう

4

2 に答える 2

-1

HTTP / 1.1サーバーを実装する場合は、RFC2616を参照してください。メッセージの長さを決定する方法については、セクション4.4を参照してください。の実装方法については、RFC2388を参照してくださいmultipart/form-data

本当の答えは次のとおりです。車輪の再発明をしないでください。そうしないと、数百ページのRFCを再実装する必要があります。そこにはたくさんのライブラリとサーバーがあります。

たとえば演習として独自のWebサーバーを作成したい場合は、それらのRFCがすでに見つかっているはずです。

于 2013-03-12T09:17:25.953 に答える