客户端方法
/// <summary> /// 发送post请求,通过API上传本地文件到服务器 /// </summary> /// <param name="authorCode">API秘钥</param> /// <param name="url">API上传地址</param> /// <param name="FilePath">需要上传的文件本地完整路径</param> /// <param name="FileName">上传文件保存的名字</param> /// <returns></returns> public static string HttpPostRequst_UploadFile(string authorCode, string url , string FilePath , string FileName ) { //--------上传------------ HttpClient client = new HttpClient(); //验证 client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authorCode); //指定类型 client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); #region MultipartFormDataContent form = new MultipartFormDataContent(); StreamContent fileContent = new StreamContent(File.OpenRead(FilePath)); fileContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data"); fileContent.Headers.ContentDisposition.FileName = FileName; form.Add(fileContent); #endregion HttpResponseMessage res = client.PostAsync(url, form).Result; var uploadModel = res.Content.ReadAsStringAsync().Result; return uploadModel; }
服务器方法
public HttpResponseMessage PostFile( ) { HttpResponseMessage result = null; var httpRequest = HttpContext.Current.Request; if (httpRequest.Files.Count > 0) { var docfiles = new List<string>(); foreach (string file in httpRequest.Files) { var postedFile = httpRequest.Files[file]; var filePath = HttpContext.Current.Server.MapPath("~/" + postedFile.FileName); postedFile.SaveAs(filePath); docfiles.Add(filePath); } result = Request.CreateResponse(HttpStatusCode.Created, docfiles); } else { result = Request.CreateResponse(HttpStatusCode.BadRequest); } return result; }