首页 > 代码库 > winform HttpWebRequest上传文件
winform HttpWebRequest上传文件
Winform点击button按钮上传:
string filePath = "E:\\test.rar"; string fileName = "test.rar"; string postURL = "http://localhost:5995/Default.aspx"; // 边界符 var boundary = "---------------" + DateTime.Now.Ticks.ToString("x"); var beginBoundary = Encoding.ASCII.GetBytes("--" + boundary + "\r\n"); var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read); // 最后的结束符 var endBoundary = Encoding.ASCII.GetBytes("--" + boundary + "--\r\n"); // 文件参数头 const string filePartHeader = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n" + "Content-Type: application/octet-stream\r\n\r\n"; var fileHeader = string.Format(filePartHeader, "file", fileName); var fileHeaderBytes = Encoding.UTF8.GetBytes(fileHeader); // 开始拼数据 var memStream = new MemoryStream(); memStream.Write(beginBoundary, 0, beginBoundary.Length); // 文件数据 memStream.Write(fileHeaderBytes, 0, fileHeaderBytes.Length); var buffer = new byte[1024]; int bytesRead; // =0 while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) { memStream.Write(buffer, 0, bytesRead); } fileStream.Close(); // Key-Value数据 var stringKeyHeader = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\"" + "\r\n\r\n{1}\r\n"; Dictionary<string, string> stringDict = new Dictionary<string, string>(); stringDict.Add("len", "500"); stringDict.Add("wid", "300"); foreach (byte[] formitembytes in from string key in stringDict.Keys select string.Format(stringKeyHeader, key, stringDict[key]) into formitem select Encoding.UTF8.GetBytes(formitem)) { memStream.Write(formitembytes, 0, formitembytes.Length); } // 写入最后的结束边界符 memStream.Write(endBoundary, 0, endBoundary.Length); //倒腾到tempBuffer? memStream.Position = 0; var tempBuffer = new byte[memStream.Length]; memStream.Read(tempBuffer, 0, tempBuffer.Length); memStream.Close(); // 创建webRequest并设置属性 var webRequest = (HttpWebRequest)WebRequest.Create(postURL); webRequest.Method = "POST"; webRequest.Timeout = 100000; webRequest.ContentType = "multipart/form-data; boundary=" + boundary; webRequest.ContentLength = tempBuffer.Length; var requestStream = webRequest.GetRequestStream(); requestStream.Write(tempBuffer, 0, tempBuffer.Length); requestStream.Close(); var httpWebResponse = (HttpWebResponse)webRequest.GetResponse(); string responseContent; using (var httpStreamReader = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.GetEncoding("utf-8"))) { responseContent = httpStreamReader.ReadToEnd(); } httpWebResponse.Close(); webRequest.Abort();
Web站点Default.aspx页面:
Response.ContentType = "text/plain"; if (Request.Files.Count == 0) { Response.Write("No file"); return; } HttpPostedFile f1 = Request.Files[0]; f1.SaveAs("E:\\test-upload.rar");
string strPars = "";
foreach (var key in Request.Form.AllKeys)
{
string val = Request[key];
strPars += "[" + key + ":" + val + "] ";
}
image.Dispose();
Response.Write("OK Get File:" + f1.FileName + " Pars:" + strPars);
winform HttpWebRequest上传文件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。