C# HttpClient Post参数同时上传文件的实现
更新时间:2022年06月09日 09:36:38 作者:luofeng0710
这篇文章主要介绍了C# HttpClient Post参数同时上传文件的实现,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
HttpClient Post参数同时上传文件
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上传文件到服务器(multipart/form-data)
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();
}
}以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
使用HttpHanlder处理404:File not found的问题
本篇文章小编为大家介绍。使用HttpHanlder处理404:File not found的问题。需要的朋友参考下2013-04-04
Unity UGUI的VerticalLayoutGroup垂直布局组件介绍使用
这篇文章主要为大家介绍了Unity UGUI的VerticalLayoutGroup垂直布局组件介绍使用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-07-07
Visual Studio 未能加载各种Package包的解决方案
打开Visual Studio 的时候,总提示未能加载相应的Package包,有时候还无法打开项目,各种错误提示,怎么解决呢?下面小编给大家带来了Visual Studio 未能加载各种Package包的解决方案,一起看看吧2016-10-10


最新评论