///
///From表单上传一个多媒体文件///
/// 地址
/// 类型名称
/// 文件名称
/// 输入流
/// 编码
///
public static string HttpRequestPost(string url, string typeName, string fileName, Stream fs, string encoding = "UTF-8")
{
HttpWebRequest request= (HttpWebRequest)WebRequest.Create(url); //建立url
request.Method = "POST";
request.Timeout= 10000;var postStream = new MemoryStream();//建立内存流来进行数据处理
#region 处理Form表单文件上传
//经过表单上传文件
string boundary = "----" + DateTime.Now.Ticks.ToString("x");//头部
string formdataTemplate = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: application/octet-stream\r\n\r\n";try{string formdata = string.Format(formdataTemplate, typeName, fileName);var formdataBytes = Encoding.ASCII.GetBytes(postStream.Length == 0 ? formdata.Substring(2, formdata.Length - 2) : formdata);//第一行不须要换行
postStream.Write(formdataBytes, 0, formdataBytes.Length); //填充内存流//写入文件
byte[] buffer = new byte[1024];int bytesRead = 0;while ((bytesRead=fs.Read(buffer,0,buffer.Length))!=0) //填充输入流
{
postStream.Write(buffer,0, bytesRead);
}
}catch(Exception ex)
{throwex;
}//结尾
var footer = Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
postStream.Write(footer,0, footer.Length);
request.ContentType= string.Format("multipart/form-data; boundary={0}", boundary);#endregionrequest.ContentLength= postStream != null ? postStream.Length : 0; //设置类容长度
if (postStream!=null)
{
postStream.Position= 0;//直接写入流
Stream requestStream =request.GetRequestStream();byte[] buffer = new byte[1024];int bytesRead = 0;while ((bytesRead = postStream.Read(buffer, 0, buffer.Length)) != 0)
{
requestStream.Write(buffer,0, bytesRead);
}
postStream.Close();//关闭文件访问
}
HttpWebResponse response=(HttpWebResponse)request.GetResponse();using (Stream responseStream=response.GetResponseStream())
{using (StreamReader myStreamReader = newStreamReader(responseStream, Encoding.GetEncoding(encoding)))
{string retString =myStreamReader.ReadToEnd();return retString; //返回结果
}
}
}