C# CulPost,用于微信上传多媒体文件中的图片
2017-02-27 16:07
295 查看
/// <summary>
/// 向指定的URL地址发起一个POST请求,同时可以上传一些数据项以及上传文件。
/// </summary>
/// <param name="url">要请求的URL地址</param>
/// <param name="filepath">要上传的文件路径</param>
/// <returns>服务器的返回结果</returns>
public string CulPost(string url, string filepath)
{
string result = "";
string contenttype = filepath.Substring(filepath.LastIndexOf('.') + 1, filepath.Length - filepath.LastIndexOf('.') - 1);
string rawurl = url;
FileStream fileStream = new FileStream(filepath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fileStream);
byte[] buffer = br.ReadBytes(Convert.ToInt32(fileStream.Length));
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
//请求
WebRequest req = WebRequest.Create(rawurl);
req.Method = "POST";
req.ContentType = "multipart/form-data; boundary=" + boundary;
//组织表单数据
StringBuilder sb = new StringBuilder();
sb.Append("--" + boundary + "\r\n");
sb.Append("Content-Disposition: form-data; name=\"media\"; filename=\"" + filepath + "\"; filelength=\"" + fileStream.Length + "\"");
sb.Append("\r\n");
sb.Append("Content-Type: image/" + contenttype);
sb.Append("\r\n\r\n");
string head = sb.ToString();
byte[] form_data = Encoding.UTF8.GetBytes(head);
//结尾
byte[] foot_data = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
//post总长度
long length = form_data.Length + fileStream.Length + foot_data.Length;
req.ContentLength = length;
Stream requestStream = req.GetRequestStream();
//这里要注意一下发送顺序,先发送form_data > buffer > foot_data
//发送表单参数
requestStream.Write(form_data, 0, form_data.Length);
//发送文件内容
requestStream.Write(buffer, 0, buffer.Length);
//结尾
requestStream.Write(foot_data, 0, foot_data.Length);
requestStream.Close();
fileStream.Close();
fileStream.Dispose();
br.Close();
br.Dispose();
//响应
WebResponse pos = req.GetResponse();
using (StreamReader sr = new StreamReader(pos.GetResponseStream(), Encoding.UTF8))
{
result = sr.ReadToEnd();
}
return result;
}
/// 向指定的URL地址发起一个POST请求,同时可以上传一些数据项以及上传文件。
/// </summary>
/// <param name="url">要请求的URL地址</param>
/// <param name="filepath">要上传的文件路径</param>
/// <returns>服务器的返回结果</returns>
public string CulPost(string url, string filepath)
{
string result = "";
string contenttype = filepath.Substring(filepath.LastIndexOf('.') + 1, filepath.Length - filepath.LastIndexOf('.') - 1);
string rawurl = url;
FileStream fileStream = new FileStream(filepath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fileStream);
byte[] buffer = br.ReadBytes(Convert.ToInt32(fileStream.Length));
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
//请求
WebRequest req = WebRequest.Create(rawurl);
req.Method = "POST";
req.ContentType = "multipart/form-data; boundary=" + boundary;
//组织表单数据
StringBuilder sb = new StringBuilder();
sb.Append("--" + boundary + "\r\n");
sb.Append("Content-Disposition: form-data; name=\"media\"; filename=\"" + filepath + "\"; filelength=\"" + fileStream.Length + "\"");
sb.Append("\r\n");
sb.Append("Content-Type: image/" + contenttype);
sb.Append("\r\n\r\n");
string head = sb.ToString();
byte[] form_data = Encoding.UTF8.GetBytes(head);
//结尾
byte[] foot_data = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
//post总长度
long length = form_data.Length + fileStream.Length + foot_data.Length;
req.ContentLength = length;
Stream requestStream = req.GetRequestStream();
//这里要注意一下发送顺序,先发送form_data > buffer > foot_data
//发送表单参数
requestStream.Write(form_data, 0, form_data.Length);
//发送文件内容
requestStream.Write(buffer, 0, buffer.Length);
//结尾
requestStream.Write(foot_data, 0, foot_data.Length);
requestStream.Close();
fileStream.Close();
fileStream.Dispose();
br.Close();
br.Dispose();
//响应
WebResponse pos = req.GetResponse();
using (StreamReader sr = new StreamReader(pos.GetResponseStream(), Encoding.UTF8))
{
result = sr.ReadToEnd();
}
return result;
}
相关文章推荐
- 微信服务号开发 上传多媒体文件:图片
- C# WinForm 上传图片,文件到服务器的方法Uploader.ashx
- ASP.NET(C#)实现一次性上传多张图片(多个文件)
- ASP.NET(C#)实现一次性上传多张图片(多个文件)
- ASP.NET(C#)实现一次性动态上传多张图片的代码(多个文件)
- C#判断上传文件是否是图片,防止木马上传
- ASP.NET(C#)实现一次性上传多张图片(多个文件)
- c#客户端图片上传到服务器端文件并且把路径保存到SQL数据库
- IIS发布网站部分特殊配置--图片上传至别的服务器、iis配置 通配符应用程序映、iis配置 C#底层拦截.htm文件请求
- ASP.NET(C#)实现一次性上传多张图片(多个文件)
- 【原创】asp.net(C#)上传图片(文件)类
- ASP.NET(C#)实现一次性上传多张图片(多个文件)
- 分享C# 利用POST上传图片文件方法[完美]
- ASP.NET(C#)实现一次性上传多张图片(多个文件)
- 随机文件名生成可用于文件上传(图片)
- ASP.NET(C#)实现一次性上传多张图片(多个文件)
- C#文件上传生成缩略图及添加文字和图片水印
- 【原创】asp.net(C#)上传图片(文件)类
- C# 单张图片的保存[BLOB保存与文件上传两种方式]与展示