C# 通过http post 请求上传图片和参数
一、C# Winform或控制台
1 /// <summary> 2 /// 通过http上传图片及传参数 3 /// </summary> 4 /// <param name="imgPath">图片地址(绝对路径:D:\demo\img\123.jpg)</param> 5 public void UploadImage(string imgPath) 6 { 7 var uploadUrl = "http://localhost:3020/upload/imgup"; 8 var dic = new Dictionary<string, string>() { 9 {"para1",1.ToString() }, 10 {"para2",2.ToString() }, 11 {"para3",3.ToString() }, 12 }; 13 var postData = Utils.BuildQuery(dic);//转换成:para1=1¶2=2¶3=3 14 var postUrl = string.Format("{0}?{1}", uploadUrl, postData);//拼接url 15 HttpWebRequest request = WebRequest.Create(postUrl) as HttpWebRequest; 16 request.AllowAutoRedirect = true; 17 request.Method = "POST"; 18 19 string boundary = DateTime.Now.Ticks.ToString("X"); // 随机分隔线 20 request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary; 21 byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n"); 22 byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n"); 23 24 int pos = imgPath.LastIndexOf("\\"); 25 string fileName = imgPath.Substring(pos + 1); 26 27 //请求头部信息 28 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)); 29 byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString()); 30 31 FileStream fs = new FileStream(imgPath, FileMode.Open, FileAccess.Read); 32 byte[] bArr = new byte[fs.Length]; 33 fs.Read(bArr, 0, bArr.Length); 34 fs.Close(); 35 36 Stream postStream = request.GetRequestStream(); 37 postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length); 38 postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); 39 postStream.Write(bArr, 0, bArr.Length); 40 postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length); 41 postStream.Close(); 42 43 HttpWebResponse response = request.GetResponse() as HttpWebResponse; 44 Stream instream = response.GetResponseStream(); 45 StreamReader sr = new StreamReader(instream, Encoding.UTF8); 46 string content = sr.ReadToEnd(); 47 }
二、图片接收接口
[ValidateInput(false)] public JsonResult imgup(string para1,string para2,string para3) { if (Request.Files.Count > 0) { //传过来的图片 var file = Request.Files[0]; //保存到本地或服务器 } return new JsonResult { }; }
1 /// <summary> 2 /// 上传图片信息 3 /// </summary> 4 /// <returns></returns> 5 [ValidateInput(false)] 6 public JsonResult ImgUp() 7 { 8 try 9 { 10 if (Request.Files.Count > 0) 11 { 12 HttpPostedFileBase file = Request.Files[0]; 13 string path = file.FileName;//获取Execle文件名 14 string IsXls = System.IO.Path.GetExtension(path).ToString().ToLower(); 15 string fileName = DateTime.Now.ToString("yyyyMMddhh") + IsXls; 16 string savePath = Server.MapPath(("~\\Upload\\") + fileName);//Server.MapPath 获得虚拟服务器相对路径 17 file.SaveAs(savePath); //SaveAs 将上传的文件内容保存在服务器上 18 } 19 return Json(new { Success = true, Message = "成功" }, JsonRequestBehavior.AllowGet); 20 } 21 catch (Exception ex) 22 { 23 return Json(new { Success = false, Message = "失败" }, JsonRequestBehavior.AllowGet); 24 } 25 }
转自连接:https://www.cnblogs.com/pingming/p/8550802.html
认真工作、认真生活,努力做最好的自己!!!