C# HttpClient Post參數(shù)同時(shí)上傳文件的實(shí)現(xiàn)
更新時(shí)間:2022年06月09日 09:36:38 作者:luofeng0710
這篇文章主要介紹了C# HttpClient Post參數(shù)同時(shí)上傳文件的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
HttpClient Post參數(shù)同時(shí)上傳文件
Demo 如下
using (var client = new HttpClient())
{
? ? using (var multipartFormDataContent = new MultipartFormDataContent())
? ? {
? ? ? ? var values = new[]
? ? ? ? {
? ? ? ? ? ? new KeyValuePair<string, string>("c", "3"),
? ? ? ? ? ? new KeyValuePair<string, string>("c", "2"),
? ? ? ? ? ? new KeyValuePair<string, string>("d", "2")
? ? ? ? ? ? ?//other values
? ? ? ? };
?
? ? ? ? foreach (var keyValuePair in values)
? ? ? ? {
? ? ? ? ? ? multipartFormDataContent.Add(new StringContent(keyValuePair.Value),
? ? ? ? ? ? ? ? String.Format("\"{0}\"", keyValuePair.Key));
? ? ? ? }
?
? ? ? ? multipartFormDataContent.Add(new ByteArrayContent(System.IO.File.ReadAllBytes(@"D:\test.jpg")),
? ? ? ? ? ? "\"pic\"",
? ? ? ? ? ? "\"test.jpg\"");
?
? ? ? ? var requestUri = "http://localhost:8080";
? ? ? ? var html = client.PostAsync(requestUri, multipartFormDataContent).Result.Content.ReadAsStringAsync().Result;
? ? }
}HttpClient上傳文件到服務(wù)器(multipart/form-data)
string reqUrl = JsonrpcHttpClient.MakeRpcUrl(typeof(Wfm_SimReport).Name, "save");
using (HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false }))//若想手動(dòng)設(shè)置Cookie則必須設(shè)置UseCookies = false
{
string boundary = string.Format("----WebKitFormBoundary{0}",DateTime.Now.Ticks.ToString("x"));
MultipartFormDataContent content = new MultipartFormDataContent(boundary);
#region 設(shè)置請(qǐng)求參數(shù)
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請(qǐng)求
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("獲取服務(wù)器返回結(jié)果錯(cuò)誤:消息:{0},堆棧:{1}",ex.Message,ex.StackTrace));
}
finally
{
//關(guān)閉文件流
fStream.Close();
client.Dispose();
}
}以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C#實(shí)現(xiàn)基于任務(wù)的異步編程模式
本文詳細(xì)講解了C#實(shí)現(xiàn)基于任務(wù)的異步編程模式,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
C#實(shí)現(xiàn)會(huì)移動(dòng)的文字效果
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)會(huì)移動(dòng)的文字效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
C#中將DataTable轉(zhuǎn)換成CSV文件的方法
DataTable用于在.net項(xiàng)目中,用于緩存數(shù)據(jù),DataTable表示內(nèi)存中數(shù)據(jù)的一個(gè)表,在.net項(xiàng)目中運(yùn)用C#將DataTable轉(zhuǎn)化為CSV文件,接下來(lái)通過本文給大家提供一個(gè)通用的方法,感興趣的朋友可以參考下2016-10-10
C# 創(chuàng)建控制臺(tái)應(yīng)用程序
這篇文章主要介紹了C# 創(chuàng)建控制臺(tái)應(yīng)用程序,在學(xué)習(xí)C#語(yǔ)言的時(shí)候,首先要學(xué)習(xí)控制臺(tái)的應(yīng)用程序,這樣才能專注于語(yǔ)言的學(xué)習(xí),減少學(xué)習(xí)的梯度,也有利于輸出自己需要輸出的內(nèi)容,一定要先使用控制臺(tái)的應(yīng)用程序的方式,下面就和小編一起學(xué)習(xí)該內(nèi)容吧2021-10-10
C#基于Socket的網(wǎng)絡(luò)通信類你了解嗎
這篇文章主要為大家詳細(xì)介紹了C#基于Socket的網(wǎng)絡(luò)通信類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03
C#下載網(wǎng)頁(yè)并在控制臺(tái)輸出的方法
這篇文章主要介紹了C#下載網(wǎng)頁(yè)并在控制臺(tái)輸出的方法,涉及C#基于http協(xié)議進(jìn)行網(wǎng)頁(yè)抓取及控制臺(tái)輸出顯示的相關(guān)技巧,需要的朋友可以參考下2015-07-07

