C# · 12月 19, 2021

C# HTTP上传文件

代码:

/// <summary>/// Http上传文件</summary>public static string HttpUploadFile(string url,string path){ // 设置参数 HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; CookieContainer cookieContainer = new CookieContainer(); request.CookieContainer = cookieContainer; request.AllowAutoRedirect = true; request.Method = “POST”; string boundary = 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); int pos = path.LastIndexOf(\\string fileName = path.Substring(pos + 1请求头部信息 StringBuilder sbHeader = new StringBuilder(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()); FileStream fs = FileStream(path,FileMode.Open,FileAccess.Read); byte[] bArr = new byte[fs.Length]; fs.Read(bArr,0= request.GetRequestStream(); postStream.Write(itemBoundaryBytes,itemBoundaryBytes.Length); postStream.Write(postHeaderBytes,postHeaderBytes.Length); postStream.Write(bArr,bArr.Length); postStream.Write(endBoundaryBytes,endBoundaryBytes.Length); postStream.Close(); 发送请求并获取相应回应数据 HttpWebResponse response = request.GetResponse() HttpWebResponse; 直到request.GetResponse()程序才开始向目标网页发送Post请求 Stream instream = response.GetResponseStream(); StreamReader sr = StreamReader(instream,Encoding.UTF8); 返回结果网页(html)代码 string content = sr.ReadToEnd(); return content;}View Code

接收文件的代码:

using System; System.Web;namespace SWX{ partial class test2 : System.Web.UI.Page { protected void Page_Load(object sender,EventArgs e) { HttpPostedFile file = Request.Files[]; file.SaveAs(MapPath(\\UploadFile\\ file.FileName)); Response.Write(Success\r\n); } }}View Code