C# 模拟POST提交文件

简介: http://blog.csdn.net/hellowjwang/article/details/19975635public class HttpPost { /// /// 以Post 形式提交数据到 uri /// ...
http://blog.csdn.net/hellowjwang/article/details/19975635


public
class HttpPost { /// <summary> /// 以Post 形式提交数据到 uri /// </summary> /// <param name="uri"></param> /// <param name="files"></param> /// <param name="values"></param> /// <returns></returns> public static byte[] Post(Uri uri, IEnumerable<UploadFile> files, NameValueCollection values) { string boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x"); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.ContentType = "multipart/form-data; boundary=" + boundary; request.Method = "POST"; request.KeepAlive = true; request.Credentials = CredentialCache.DefaultCredentials; MemoryStream stream = new MemoryStream(); byte[] line = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n"); //提交文本字段 if (values != null) { string format = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\";\r\n\r\n{1}"; foreach (string key in values.Keys) { string s = string.Format(format, key, values[key]); byte[] data = Encoding.UTF8.GetBytes(s); stream.Write(data, 0, data.Length); } stream.Write(line, 0, line.Length); } //提交文件 if (files != null) { string fformat = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n Content-Type: application/octet-stream\r\n\r\n"; foreach (UploadFile file in files) { string s = string.Format(fformat, file.Name, file.Filename); byte[] data = Encoding.UTF8.GetBytes(s); stream.Write(data, 0, data.Length); stream.Write(file.Data, 0, file.Data.Length); stream.Write(line, 0, line.Length); } } request.ContentLength = stream.Length; Stream requestStream = request.GetRequestStream(); stream.Position = 0L; stream.CopyTo(requestStream); stream.Close(); requestStream.Close(); using (var response = request.GetResponse()) using (var responseStream = response.GetResponseStream()) using (var mstream = new MemoryStream()) { responseStream.CopyTo(mstream); return mstream.ToArray(); } } /// <summary> /// 上传文件 /// </summary> public class UploadFile { public UploadFile() { ContentType = "application/octet-stream"; } public string Name { get; set; } public string Filename { get; set; } public string ContentType { get; set; } public byte[] Data { get; set; } } }

 

相关文章
|
存储 监控 算法
基于 C# 的局域网计算机监控系统文件变更实时监测算法设计与实现研究
本文介绍了一种基于C#语言的局域网文件变更监控算法,通过事件驱动与批处理机制结合,实现高效、低负载的文件系统实时监控。核心内容涵盖监控机制选择(如事件触发机制)、数据结构设计(如监控文件列表、事件队列)及批处理优化策略。文章详细解析了C#实现的核心代码,并提出性能优化与可靠性保障措施,包括批量处理、事件过滤和异步处理等技术。最后,探讨了该算法在企业数据安全监控、文件同步备份等场景的应用潜力,以及未来向智能化扩展的方向,如文件内容分析、智能告警机制和分布式监控架构。
353 3
基于 C# 编写的 Visual Studio 文件编码显示与修改扩展插件
基于 C# 编写的 Visual Studio 文件编码显示与修改扩展插件
594 9
|
存储 C#
【C#】大批量判断文件是否存在的两种方法效率对比
【C#】大批量判断文件是否存在的两种方法效率对比
600 1
|
监控 安全 C#
使用C#如何监控选定文件夹中文件的变动情况?
使用C#如何监控选定文件夹中文件的变动情况?
533 19
|
编译器 C# Windows
C#基础:手动编译一个.cs源代码文件并生成.exe可执行文件
通过上述步骤,应该能够高效准确地编译C#源代码并生成相应的可执行文件。此外,这一过程强调了对命令行编译器的理解,这在调试和自动化编译流程中是非常重要的。
2101 2
|
文字识别 C# Python
使用C#将几个Excel文件合并去重分类
使用C#将几个Excel文件合并去重分类
312 3
|
XML 存储 缓存
C#使用XML文件的详解及示例
C#使用XML文件的详解及示例
949 0
【C#】C#读写Excel文件
【C#】C#读写Excel文件
740 1
|
C# 图形学 数据安全/隐私保护
Unity数据加密☀️ 二、使用Rider将C#代码生成DLL文件
Unity数据加密☀️ 二、使用Rider将C#代码生成DLL文件
|
C#
C# 写日志文件
C# 写日志文件
233 0