C# 中的 HTTP POST 檔案上傳
在 Web 應用程式中,透過 HTTP POST 傳送檔案是一項常見的任務。在 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
允許您在一個請求中同時傳送表單資料和二進位資料。
<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中文網其他相關文章!