1 var path = @"C:\\Users\\HK\\Desktop\\项目1\\00611844.tif"; 2 var path2 = @"C:\\Users\\HK\\Desktop\\项目1\\006118441.tif"; 3 var uriString = @"http://localhost:5085/icapi/invoice/recognize/upload"; 4 var url = new Uri(uriString); 5 // 设置参数 6 HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 7 CookieContainer cookieContainer = new CookieContainer(); 8 request.CookieContainer = cookieContainer; 9 request.AllowAutoRedirect = true; 10 request.Method = "POST"; 11 request.Timeout = 10000 * 30; 12 string boundary = DateTime.Now.Ticks.ToString("X"); // 随机分隔线 13 request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary; 14 byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n"); 15 byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n"); 16 17 int pos = path.LastIndexOf("\\"); 18 string fileName = path.Substring(pos + 1); 19 20 int pos2 = path2.LastIndexOf("\\"); 21 string fileName2 = path2.Substring(pos2 + 1); 22 23 //请求头部信息 24 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)); 25 byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString()); 26 27 //请求头部信息2 28 StringBuilder sbHeader2 = new StringBuilder(string.Format("Content-Disposition:form-data;name=\"file\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n", fileName2)); 29 byte[] postHeaderBytes2 = Encoding.UTF8.GetBytes(sbHeader2.ToString()); 30 31 FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); 32 byte[] bArr = new byte[fs.Length]; 33 fs.Read(bArr, 0, bArr.Length); 34 fs.Close(); 35 36 FileStream fs2 = new FileStream(path2, FileMode.Open, FileAccess.Read); 37 byte[] bArr2 = new byte[fs2.Length]; 38 fs2.Read(bArr2, 0, bArr2.Length); 39 fs2.Close(); 40 41 Stream postStream = request.GetRequestStream(); 42 postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length); 43 postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); 44 postStream.Write(bArr, 0, bArr.Length); 45 46 postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length); 47 postStream.Write(postHeaderBytes2, 0, postHeaderBytes2.Length); 48 postStream.Write(bArr2, 0, bArr2.Length); 49 postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length); 50 postStream.Close(); 51 52 //发送请求并获取相应回应数据 53 HttpWebResponse response = request.GetResponse() as HttpWebResponse; 54 //直到request.GetResponse()程序才开始向目标网页发送Post请求 55 Stream instream = response.GetResponseStream(); 56 StreamReader sr = new StreamReader(instream, Encoding.UTF8); 57 //返回结果网页(html)代码 58 string content = sr.ReadToEnd();
上面的是客户端
服务端:
通过
Request.Files即可获得传过来的文件,一般是mvc比较支持文件的传输,但是在配置如果你想自己的方法加上特定的路由如:
[RoutePrefix("icapi/invoice")] public class ArgRecognitionApiController : Controller { [Route("recognize/upload")] public JsonResult T() { JsonResult jsonResult = new JsonResult(); List<BanthResult> result = new List<BanthResult>(); jsonResult.Data = result; var fileCount = Request.Files.Count; for (int i = 0; i < fileCount; i++) { var file = Request.Files[i]; BanthResult banthResult = new BanthResult(); Invoice inv = new Invoice(); banthResult.invoice = inv; banthResult.fileId = file.FileName; result.Add(banthResult); } return jsonResult; } }
这个是后再配置路由的时候要加上
routes.MapMvcAttributeRoutes();