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

发送端代码

using (HttpClient client = new HttpClient())
{var content = new MultipartFormDataContent();//添加字符串参数,参数名为qqcontent.Add(new StringContent("123456"), "qq");string path = Path.Combine(System.Environment.CurrentDirectory, "1.png");//添加文件参数,参数名为files,文件名为123.pngcontent.Add(new ByteArrayContent(System.IO.File.ReadAllBytes(path)), "file", "123.png");var requestUri = "http://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来进行表单提交c#教程上传文件是它内部帮我们拼接了这个复杂的内容。(可以用Fiddler抓一下请求看看)emm…我去找一下当初是怎么弄的文件上传,如果有再更新此文。

以上就是C# 使用HttpClient上传文件并附带其他参数的步骤的详细内容

C# 使用HttpClient上传文件并附带其他参数的步骤相关推荐

  1. C# HttpClient上传文件并附带其它参数

    1.Fiddler抓包参数详情 Content-Type: multipart/form-data; boundary="8d9ade1fd906a6a" Content-Leng ...

  2. [原创]使用ajaxFileUpload.js上传文件时附带额外参数。

    最近公司的一个项目涉及到导入Excel的功能,于是就想到用ajaxFileUpload来实现上传文件,因为用过很多次了,网上也有很多文章介绍.使用方法不表.但是在附带参数这个环节卡住了:文件可以上传到 ...

  3. FormData上传文件同时附带其他参数

    前端js代码: function fileSubmit() {var formData = new FormData();formData.append("file",$(&quo ...

  4. elementUI中el-upload上传文件时附带额外参数传递

    公司vue项目中,文件上传这块先前一直使用的单独接口,即只是单纯的上传文件接口,上传完了拿到文件的id之后再调用文件关联绑定关系的接口,上传的代码如下即可:需要上传的url地址 以及hearders中 ...

  5. [转]httpclient 上传文件、下载文件

    用httpclient4.3 post方式推送文件到服务端 准备:httpclient-4.3.3.jar:httpcore-4.3.2.jar:httpmime-4.3.3.jar/*** 上传文件 ...

  6. HttpClient上传文件传入MultipartFile类型

    通常我们在使用httpclient的时候,一把都是使用get或者postd的方式传输一些数据.在近期的项目中有这样的一个需求,我需要通过httpclient去调用一个写好的文件上传的接口,接口中是使用 ...

  7. HttpClient上传文件到微信素材乱码问题解决

    在开发微信第三方公众平台的时候,需要上传图片.语音等文件到微信服务器.当文件名存在中文时会出现乱码.网上搜了一大堆文章,大部讲什么设置编码啥的,放到微信素材上传这个场景就是用不了,试了各种方式,依然是 ...

  8. httpclient 上传企业微信临时素材文件,返回结果一直是44001,提示媒体文件是空;(httpclient上传文件并且绕过https)

    /*** 使用httpclint 发送文件* @param fileInputStream* 上传的文件* @return 响应结果*/public static String uploadFile( ...

  9. ElementUI中el-upload怎样上传文件并且传递额外参数给Springboot后台进行接收

    场景 需要将Excel中的数据导入到数据库中,就会用到文件上传的功能. 这里使用ElementUI的el-upload控件实现文件上传. 注: 博客: https://blog.csdn.net/ba ...

最新文章

  1. eclipse中配置SVN
  2. 王者传奇服务器维护一般多长时间,9377王者传奇合理分配刷图时间其实很重要...
  3. regexbuddy使用记录
  4. 通过Net Manager 配置Oracle 11g本地监听服务(listener service)
  5. 手机服务器共享信息,手机云共享服务器
  6. 点计算机没有本地磁盘,快速解决WinPE系统下没有本地磁盘的方法
  7. matplotlib 等高线的绘制 —— plt.contour 与 plt.contourf
  8. 推荐几款好用的CRM
  9. cv方向有哪些_【星球知识卡片】视频分类与行为识别有哪些核心技术,对其进行长期深入学习...
  10. bat批处理常用命令
  11. 详解数据库锁机制和原理
  12. 新广告法违规词、敏感词在线检测工具
  13. PMP-32项目成本管理
  14. 车载TBOX,4G北斗/GPS双模定位
  15. Android 查询设备信息c/c++常用方法
  16. 20180710使用gh
  17. ACPC2015 K 树的直径
  18. 用Python爬取新型冠状病毒肺炎实时数据,pyecharts v1.x绘制省市区疫情地图
  19. liunx邮件群发服务器,邮件发送服务器 Postfix
  20. ui动效 unity_Unity - UIWidgets 6. 显示列表

热门文章

  1. 猜数字小游戏(原创)
  2. flutter友盟分享_集成推送那点事-友盟/Mob-Flutter/FCM
  3. 黑马程序员_Java_异常
  4. 硬盘安装arch linux,ArchLinux硬盘安装
  5. 【后端教程】低代码起势,为什么它有希望“干掉”开发? | 甲子光年
  6. service mysql k8s_Kubernetes/K8S基础使用方法总结【五】——Service
  7. python爬取京东笔记本标题、品牌、价格、评论数
  8. Altera DDR3调试记录
  9. InfluxDB学习整理
  10. 最小公倍数c语言调用该函数,C语言中如何调用函数求最大公约数和最小公倍数...