C#实现HTTP上传文件的方法
本文实例讲述了C#实现HTTP上传文件的方法。分享给大家供大家参考。具体实现方法如下:
发送文件代码如下:
///<summary>
///Http上传文件
///</summary>
publicstaticstringHttpUploadFile(stringurl,stringpath)
{
//设置参数
HttpWebRequestrequest=WebRequest.Create(url)asHttpWebRequest;
CookieContainercookieContainer=newCookieContainer();
request.CookieContainer=cookieContainer;
request.AllowAutoRedirect=true;
request.Method="POST";
stringboundary=DateTime.Now.Ticks.ToString("X");//随机分隔线
request.ContentType="multipart/form-data;charset=utf-8;boundary="+boundary;
byte[]itemBoundaryBytes=Encoding.UTF8.GetBytes("\r\n--"+boundary+"\r\n");
byte[]endBoundaryBytes=Encoding.UTF8.GetBytes("\r\n--"+boundary+"--\r\n");
intpos=path.LastIndexOf("\\"); stringfileName=path.Substring(pos+1);
//请求头部信息 StringBuildersbHeader=newStringBuilder(string.Format("Content-Disposition:form-data;name=\"file\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n",fileName)); byte[]postHeaderBytes=Encoding.UTF8.GetBytes(sbHeader.ToString());
FileStreamfs=newFileStream(path,FileMode.Open,FileAccess.Read); byte[]bArr=newbyte[fs.Length]; fs.Read(bArr,0,bArr.Length); fs.Close();
StreampostStream=request.GetRequestStream(); postStream.Write(itemBoundaryBytes,0,itemBoundaryBytes.Length); postStream.Write(postHeaderBytes,0,postHeaderBytes.Length); postStream.Write(bArr,0,bArr.Length); postStream.Write(endBoundaryBytes,0,endBoundaryBytes.Length); postStream.Close();
//发送请求并获取相应回应数据 HttpWebResponseresponse=request.GetResponse()asHttpWebResponse; //直到request.GetResponse()程序才开始向目标网页发送Post请求 Streaminstream=response.GetResponseStream(); StreamReadersr=newStreamReader(instream,Encoding.UTF8); //返回结果网页(html)代码 stringcontent=sr.ReadToEnd(); returncontent; }