一:用postman实现文件上传,需要配置的地方
1)参数的配置
2)headers的配置
3)body的配置
4)点击send就可以上传成功;
二: 用c#服务端接收
public async Task<IHttpActionResult> Test() { string result = ""; string url = ""; List<Stream> listStream = new List<Stream>(); List<byte[]> listContentByte = new List<byte[]>(); List<string> listFileName = new List<string>(); string methodsName = System.Web.HttpContext.Current.Request.QueryString["methodsName"]; string serverPath = System.Web.HttpContext.Current.Request.QueryString["serverPath"]; string ArtifactsNum = System.Web.HttpContext.Current.Request.QueryString["ArtifactsNum"]; string userName = System.Web.HttpContext.Current.Request.QueryString["userName"]; string guidStr = System.Web.HttpContext.Current.Request.QueryString["guidStr"]; string routeUrl = System.Web.HttpContext.Current.Request.QueryString["routeUrl"]; Encoding myEncoding = Encoding.GetEncoding("UTF-8"); //gb2312 FilesType filesType = FilesType.General; //接收传递过来的数据流 Stream stream = System.Web.HttpContext.Current.Request.InputStream; StreamReader reader = new StreamReader(stream, myEncoding); string xml = " "; StringBuilder strXML = new StringBuilder(); while (reader.Peek() >= 0) { string line = reader.ReadLine().Trim();//直接读取一行 if (line == null) return null; if (line == String.Empty) continue; if (line.StartsWith("<")) { xml = line.Trim(); strXML.Append(xml); } } String xmlData = reader.ReadToEnd(); listStream.Add(stream); //byte[] bytes = new byte[stream.Length]; //stream.Read(bytes, 0, bytes.Length); // 设置当前流的位置为流的开始 //stream.Seek(0, SeekOrigin.Begin); byte[] bytes = System.Text.Encoding.UTF8.GetBytes(strXML.ToString()); listContentByte.Add(bytes); Request.Content.ReadAsStreamAsync().Result.Seek(0, System.IO.SeekOrigin.Begin); ///string content = Request.Content.ReadAsStringAsync().Result; var httpRequest = HttpContext.Current.Request; //HttpFileCollection files = HttpContext.Current.Request.Files; if (httpRequest.Files.Count > 0) { foreach (string file in httpRequest.Files) { var postedFile = httpRequest.Files[file]; listFileName.Add(postedFile.FileName.Split('.')[0]); } } using (HttpClient client = new HttpClient()) { Dictionary<string, string> DicData = new Dictionary<string, string>(); DicData.Add("MethodName", methodsName); DicData.Add("ServerPath", serverPath); DicData.Add("ArtifactsNum", ArtifactsNum.ToString()); DicData.Add("SendTime", DateTime.Now.ToString()); DicData.Add("UserName", userName); DicData.Add("FileType", filesType.ToString()); DicData.Add("FileGuid", guidStr); client.MaxResponseContentBufferSize = 2147483647; client.Timeout = TimeSpan.FromMinutes(30); MediaTypeWithQualityHeaderValue temp = new MediaTypeWithQualityHeaderValue("application/json") { CharSet = "utf-8" }; client.DefaultRequestHeaders.Accept.Add(temp);//设定要响应的数据格式 using (var content = new MultipartFormDataContent())//表明是通过multipart/form-data的方式上传数据 { var formDatas = this.GetFormDataByteArrayContent(this.GetNameValueCollection(DicData));//获取键值集合对应 var files = this.GetFileByteArray(listContentByte, listFileName);//获取文件集合对应的ByteArrayContent集合 Action<List<ByteArrayContent>> act = (dataContents) => {//声明一个委托,该委托的作用就是将ByteArrayContent集合加入到MultipartFormDataContent中 foreach (var byteArrayContent in dataContents) { content.Add(byteArrayContent); } }; act(formDatas); act(files);//执行act try { url = string.Format(routeUrl + "api/Trading/Files/UploadOptimizeFile"); var returnResult = client.PostAsync(url, content).Result;//post请求 if (returnResult.StatusCode == HttpStatusCode.OK) result = returnResult.Content.ReadAsAsync<string>().Result; else result = "30|客户端连接路由端出错,错误代码:" + returnResult.StatusCode.ToString(); } catch (Exception ex) { result = "29|客户端连接超时"; } } } return Ok(result); }