Multipart/Form-Data POST からのファイル バイトの抽出
multipart/form-data POST では、ファイル データはリクエストストリーム。これにより、サーバー側でファイルのバイトを抽出する際に課題が生じます。解決策の 1 つは、Microsoft のパブリック API を利用してマルチパート コンテンツを解析することです。
実装
Microsoft の API を使用してマルチパート データを解析するには、System.Net.Http が必要です。 .dll および System.Net.Http.Formatting.dll アセンブリ。 .NET 4.5 の場合、これらのアセンブリが含まれています。 .NET 4 の場合は、NuGet 経由でダウンロードします。
参照されたアセンブリを使用して、解析ロジックを実装できます。
public static async Task ParseFiles( Stream data, string contentType, Action<string, Stream> fileProcessor) { var streamContent = new StreamContent(data); streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse(contentType); var provider = await streamContent.ReadAsMultipartAsync(); foreach (var httpContent in provider.Contents) { var fileName = httpContent.Headers.ContentDisposition.FileName; if (string.IsNullOrWhiteSpace(fileName)) { continue; } using (Stream fileContents = await httpContent.ReadAsStreamAsync()) { fileProcessor(fileName, fileContents); } } }
このコードを使用するには、次のような WCF REST メソッドを実装できます。以下:
[OperationContract] [WebInvoke(Method = WebRequestMethods.Http.Post, UriTemplate = "/Upload")] void Upload(Stream data) { MultipartParser.ParseFiles( data, WebOperationContext.Current.IncomingRequest.ContentType, MyProcessMethod); }
Microsoft の API を利用すると、ファイルのバイトを効果的に抽出できます。 multipart/form-data POST リクエストにより、ファイルをディスクに書き込むことができます。
以上が.NET でマルチパート/フォームデータ POST リクエストからファイル バイトを抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。