您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

2026-03-31 10:451阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计575个文字,预计阅读时间需要3分钟。

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

使用HttpClient和MultipartFormDataContent(适用于.NET Framework 4.5版本)发送文件:

csharpusing (HttpClient client=new HttpClient()){ var content=new MultipartFormDataContent(); // 添加字符串参数 content.Add(new StringContent(参数值), 参数名); // 添加文件 content.Add(new ByteArrayContent(System.IO.File.ReadAllBytes(文件路径)), 文件名, 文件类型); // 发送请求 var response=await client.PostAsync(URL, content); // 处理响应 var result=await response.Content.ReadAsStringAsync();}

HttpClientMultipartFormDataContent(传送门)最低适用于.NET Framework 4.5版本

发送端代码

using (HttpClient client = new HttpClient()) { var content = new MultipartFormDataContent(); //添加字符串参数,参数名为qq content.Add(new StringContent("123456"), "qq"); string path = Path.Combine(System.Environment.CurrentDirectory, "1.png"); //添加文件参数,参数名为files,文件名为123.png content.Add(new ByteArrayContent(System.IO.File.ReadAllBytes(path)), "file", "123.png"); var requestUri = "192.168.1.108:56852/api/Test/SaveFile"; var result = client.PostAsync(requestUri, content).Result.Content.ReadAsStringAsync().Result; Console.WriteLine(result); }

接收端代码

[HttpPost] public async Task<JsonResult> SaveFile([FromForm]string qq, IFormFile file) { return await Task.Run(() => { try { //保存文件到本地 var filefullPath = Path.Combine(Directory.GetCurrentDirectory(), file.FileName); using (FileStream fs = new FileStream(filefullPath, FileMode.Create)) { file.CopyTo(fs); fs.Flush(); } } catch (Exception ex) { return Fail(file.FileName + "---" + ex.Message); } return Success(); }); }

注意:如果要通过参数形式接收数据,需要确保参数名称和上面发送请求中设置的名称一致,否则无法自动绑定到参数中,且需要给参数加上[FromForm]的标记。

使用model对象接收数据

public class SaveFileModel { public string qq { get; set; } public IFormFile File { get; set; } } public async Task<JsonResult> SaveFile([FromForm]SaveFileModel model) { //...... }

使用HttpContext从请求的Form中获取数据

public async Task<JsonResult> SaveFile() { return await Task.Run(() => { var files = HttpContext.Request.Form.Files; var qq = HttpContext.Request.Form["qq"]; //...... }); }

总结

这个问题是在写一个.Net Core项目时遇到的,以前在.Net Framework 4.0的时候,使用string拼接表单中文件的内容,到处都是boundary分界线。用MultipartFormDataContent来进行表单提交上传文件是它内部帮我们拼接了这个复杂的内容。(可以用Fiddler抓一下请求看看)emm...我去找一下当初是怎么弄的文件上传,如果有再更新此文。

以上就是C# 使用HttpClient上传文件并附带其他参数的步骤的详细内容,更多关于C# 使用HttpClient上传文件的资料请关注自由互联其它相关文章!

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

本文共计575个文字,预计阅读时间需要3分钟。

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

使用HttpClient和MultipartFormDataContent(适用于.NET Framework 4.5版本)发送文件:

csharpusing (HttpClient client=new HttpClient()){ var content=new MultipartFormDataContent(); // 添加字符串参数 content.Add(new StringContent(参数值), 参数名); // 添加文件 content.Add(new ByteArrayContent(System.IO.File.ReadAllBytes(文件路径)), 文件名, 文件类型); // 发送请求 var response=await client.PostAsync(URL, content); // 处理响应 var result=await response.Content.ReadAsStringAsync();}

HttpClientMultipartFormDataContent(传送门)最低适用于.NET Framework 4.5版本

发送端代码

using (HttpClient client = new HttpClient()) { var content = new MultipartFormDataContent(); //添加字符串参数,参数名为qq content.Add(new StringContent("123456"), "qq"); string path = Path.Combine(System.Environment.CurrentDirectory, "1.png"); //添加文件参数,参数名为files,文件名为123.png content.Add(new ByteArrayContent(System.IO.File.ReadAllBytes(path)), "file", "123.png"); var requestUri = "192.168.1.108:56852/api/Test/SaveFile"; var result = client.PostAsync(requestUri, content).Result.Content.ReadAsStringAsync().Result; Console.WriteLine(result); }

接收端代码

[HttpPost] public async Task<JsonResult> SaveFile([FromForm]string qq, IFormFile file) { return await Task.Run(() => { try { //保存文件到本地 var filefullPath = Path.Combine(Directory.GetCurrentDirectory(), file.FileName); using (FileStream fs = new FileStream(filefullPath, FileMode.Create)) { file.CopyTo(fs); fs.Flush(); } } catch (Exception ex) { return Fail(file.FileName + "---" + ex.Message); } return Success(); }); }

注意:如果要通过参数形式接收数据,需要确保参数名称和上面发送请求中设置的名称一致,否则无法自动绑定到参数中,且需要给参数加上[FromForm]的标记。

使用model对象接收数据

public class SaveFileModel { public string qq { get; set; } public IFormFile File { get; set; } } public async Task<JsonResult> SaveFile([FromForm]SaveFileModel model) { //...... }

使用HttpContext从请求的Form中获取数据

public async Task<JsonResult> SaveFile() { return await Task.Run(() => { var files = HttpContext.Request.Form.Files; var qq = HttpContext.Request.Form["qq"]; //...... }); }

总结

这个问题是在写一个.Net Core项目时遇到的,以前在.Net Framework 4.0的时候,使用string拼接表单中文件的内容,到处都是boundary分界线。用MultipartFormDataContent来进行表单提交上传文件是它内部帮我们拼接了这个复杂的内容。(可以用Fiddler抓一下请求看看)emm...我去找一下当初是怎么弄的文件上传,如果有再更新此文。

以上就是C# 使用HttpClient上传文件并附带其他参数的步骤的详细内容,更多关于C# 使用HttpClient上传文件的资料请关注自由互联其它相关文章!

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。