C# HTTP POST 文件上传详解
本文将详细介绍如何使用 C# 将文件上传到 Web 服务器,这在 Windows 应用开发中是一个常见需求,需要理解 HTTP 表单请求的原理。
使用 HttpWebRequest 实现 (适用于 .NET 4.5 之前)
在 .NET 4.5 之前,文件上传通常使用传统的 HttpWebRequest 对象。步骤如下:
req.GetRequestStream()
创建 HttpStream 对象。示例代码:
<code class="language-csharp">HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest; req.KeepAlive = false; req.Method = "POST"; req.ContentType = file.ContentType; req.ContentLength = file.Length; using (Stream requestStream = req.GetRequestStream()) using (Stream fileStream = File.OpenRead(file.FileName)) { fileStream.CopyTo(requestStream); }</code>
使用 HttpClient 和 MultipartFormDataContent 实现 (适用于 .NET 4.5 及更高版本)
.NET 4.5 及更高版本 (或通过在 .NET 4.0 中使用 "Microsoft.Net.Http" NuGet 包),可以使用 HttpClient 和 MultipartFormDataContent 更轻松地模拟表单请求。
示例代码:
<code class="language-csharp">private async Task<Stream> Upload(string actionUrl, string paramString, Stream paramFileStream, byte[] paramFileBytes) { HttpContent stringContent = new StringContent(paramString); HttpContent fileStreamContent = new StreamContent(paramFileStream); HttpContent bytesContent = new ByteArrayContent(paramFileBytes); using (var client = new HttpClient()) using (var formData = new MultipartFormDataContent()) { formData.Add(stringContent, "param1", "param1"); formData.Add(fileStreamContent, "file1", "file1"); formData.Add(bytesContent, "file2", "file2"); var response = await client.PostAsync(actionUrl, formData); if (response.IsSuccessStatusCode) { return await response.Content.ReadAsStreamAsync(); } } return null; }</code>
通过以上步骤,您可以轻松地使用 C# 应用程序通过 HTTP POST 将文件上传到 Web 服务器。
以上是如何使用 C# 通过 HTTP POST 发送文件:综合指南的详细内容。更多信息请关注PHP中文网其他相关文章!