C# での HTTP POST ファイルのアップロード
HTTP POST 経由でファイルを送信することは、Web アプリケーションでは一般的なタスクです。 C# では、HttpWebRequest
クラスと MultipartFormDataContent
オブジェクトを使用してこの機能を実現できます。
HttpWebRequest オブジェクトの作成
まず、HttpWebRequest
オブジェクトを作成し、Web サーバーの URI を指定します。次に、Method
属性を「POST」に設定し、ContentType
属性を送信されるファイルの適切なコンテンツ タイプに設定します。
<code class="language-csharp">HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest; req.Method = "POST"; req.ContentType = file.ContentType;</code>
ファイルをアップロードする準備ができました
ファイルを送信するには、MultipartFormDataContent
オブジェクトを作成してリクエストに含めます。 MultipartFormDataContent
1 つのリクエストでフォーム データとバイナリ データの両方を送信できます。
<code class="language-csharp">using (var formData = new MultipartFormDataContent()) { formData.Add(new StringContent(file.Name), "file"); formData.Add(new StreamContent(file.Content), file.Name, file.Name); }</code>
リクエストを送信
最後に、GetResponse()
または GetResponseAsync()
を使用してリクエストを Web サーバーに送信します。
<code class="language-csharp">HttpWebResponse response = null; try { response = req.GetResponse() as HttpWebResponse; } catch (Exception e) { // 处理异常 }</code>
.NET 4.0 以前の代替手段
.NET 4.0 以前の場合、NuGet の Microsoft.Net.Http
パッケージを使用して、ファイルのアップロード プロセスを簡素化できます。
<code class="language-csharp">using System.Net.Http; using System.Net.Http.Headers; private async Task<System.IO.Stream> Upload(string actionUrl, string paramString, Stream paramFileStream, byte[] paramFileBytes) { using (var client = new HttpClient()) { using (var formData = new MultipartFormDataContent()) { formData.Add(new StringContent(paramString), "param1"); formData.Add(new StreamContent(paramFileStream), "file1"); formData.Add(new ByteArrayContent(paramFileBytes), "file2"); var response = await client.PostAsync(actionUrl, formData); if (!response.IsSuccessStatusCode) { return null; } return await response.Content.ReadAsStreamAsync(); } } }</code>
以上がC# で HTTP POST ファイルのアップロードを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。