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