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; } } }

 

相关文章
|
2月前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
|
2月前
|
C#
C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录
C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录
42 0
|
25天前
|
C#
【C#】C#读写Excel文件
【C#】C#读写Excel文件
23 1
|
27天前
|
JavaScript 前端开发 C#
初识Unity——创建代码、场景以及五个常用面板(创建C#代码、打开代码文件、场景的创建、Project、Hierarchy、Inspector、Scene、Game )
初识Unity——创建代码、场景以及五个常用面板(创建C#代码、打开代码文件、场景的创建、Project、Hierarchy、Inspector、Scene、Game )
22 0
|
2月前
|
XML C# 数据格式
C# 解析XML文件
C# 解析XML文件
69 1
|
2月前
|
C#
C#获取文件基本信息,文件名称、修改时间、文件路径等
C#获取文件基本信息,文件名称、修改时间、文件路径等
23 0
|
2月前
|
安全 数据处理 C#
C# Post数据或文件到指定的服务器进行接收
C# Post数据或文件到指定的服务器进行接收
|
2月前
|
C# 开发工具 数据安全/隐私保护
C#实现基于Word保护性模板文件的修改
C#实现基于Word保护性模板文件的修改
|
2月前
|
C#
C# Winform 选择文件夹和选择文件
C# Winform 选择文件夹和选择文件
64 0