WCF REST サービスの Multipart/Form-Data POST からファイル バイトを抽出する
Web フォームでは、multipart/form-data コンテンツ タイプがよく使用されますファイルを Web サービスに投稿します。これによりファイル転送が容易になりますが、マルチパート ボディからファイル バイトを抽出するのは困難な場合があります。この問題の解決策の 1 つは、.NET 4.5 で導入されたパブリック Microsoft API を活用することです。
この API を利用するには、System.Net.Http.dll と System.Net.Http.Formatting を含める必要があります。 dll をプロジェクトに追加します。 .NET 4 を使用している場合は、NuGet を通じてこれらのアセンブリを取得できます。
アセンブリを配置したら、次のコードを使用してマルチパート本文を解析し、ファイル バイトを抽出できます。
public static async Task ParseFiles( Stream data, string contentType, Action<string, Stream> fileProcessor) { // Create a stream content based on the input stream var streamContent = new StreamContent(data); // Set the content type header streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse(contentType); // Read the multipart data as multipart content var provider = await streamContent.ReadAsMultipartAsync(); // Loop through each content retrieved from the multipart body foreach (var httpContent in provider.Contents) { // Get the file name var fileName = httpContent.Headers.ContentDisposition.FileName; // If there is a file name, ignore empty file names if (string.IsNullOrWhiteSpace(fileName)) { continue; } // Read the file content stream using (Stream fileContents = await httpContent.ReadAsStreamAsync()) { // Pass the file name and file content stream to the specified processor fileProcessor(fileName, fileContents); } } } ```` To use this code, you can create a custom file processor method, such as:
private void MyProcessMethod(文字列名, ストリーム内容)
{
// Your code to process the file data
}
以上がWCF REST サービスのマルチパート/フォームデータ POST からファイル バイトを抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。