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中文网其他相关文章!