C# HttpClient上傳檔案到伺服器(multipart/form-data)
阿新 • • 發佈:2019-01-09
string reqUrl = JsonrpcHttpClient.MakeRpcUrl(typeof(Wfm_SimReport).Name, "save"); using (HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false }))//若想手動設定Cookie則必須設定UseCookies = false { string boundary = string.Format("----WebKitFormBoundary{0}",DateTime.Now.Ticks.ToString("x")); MultipartFormDataContent content = new MultipartFormDataContent(boundary); #region 設定請求引數 content.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data"); content.Headers.Add("Cookie", TokenManager.Token); content.Headers.Add("client", "true"); #endregion if (string.IsNullOrEmpty(fullPath) && !File.Exists(fullPath)) { return false; } string fileName = Path.GetFileName(fullPath); #region Stream請求 FileStream fStream = File.Open(fullPath, FileMode.Open, FileAccess.Read); content.Add(new StreamContent(fStream, (int)fStream.Length), "file", fileName); #endregion content.Add(new StringContent(JsonHelper.Serialize(entity)), "dtoStr"); var result = client.PostAsync(reqUrl, content).Result; try { if (result.IsSuccessStatusCode) { string rslt = result.Content.ReadAsStringAsync().Result; Debug.WriteLine(rslt); return true; } } catch (Exception ex) { Debug.WriteLine(string.Format("獲取伺服器返回結果錯誤:訊息:{0},堆疊:{1}",ex.Message,ex.StackTrace)); } finally { //關閉檔案流 fStream.Close(); client.Dispose(); } }