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. 阶段式(瀑布式)传统软件研发流程
  2. Ambrosus宣布推出用于Web Apps、iOS、Android的源代码开发套件
  3. linux下shell编程print与printf的区别
  4. Cocos2d—android 中常用的工具类
  5. 使用反应流作为Drools的数据源
  6. 从零开始的全栈工程师——html篇1
  7. ZooKeeper 的工作流程
  8. 信息学奥赛一本通(2049:【例5.19】字符串判等)
  9. centos7 重置root 密码
  10. HDU2109 Fighting for HDU【排序】
  11. 往PPT幻灯中添加图片的方法有哪些?
  12. 历史上的今天:乔布斯辞去苹果CEO一职;Windows 95 发布
  13. ROS dst-nat端口映射限制访问映射IP
  14. 软件工程——团队作业4
  15. error Type referred to is not an annotation type:
  16. 海康 linux java demo_Java 实现 海康摄像头抓拍图像 Windows、Linux
  17. 也许你在到处找PS,不妨来这里看看
  18. 国外问卷调查是骗人的吗?
  19. clamav完整查杀linux病毒实战
  20. Cocos Creater 敏捷开发之插件开发

热门文章

  1. dart pub私有仓库搭建、私有仓库上传方法、上传工具定制
  2. 神器,阿里巴巴Java代码检查插件
  3. 小白鼠喝毒水问题(一分为二的思想)
  4. 修改浏览器User-Agent
  5. Codeforces Round #652 div2 总结 端午节前小结
  6. Log4j 重写 RollingFileAppender 实现按日期生成文件夹文件名
  7. PNP与NPN两种三极管使用方法
  8. 计算机与信息安全的基本知识,信息安全的基本常识
  9. 毕设必备!Python智慧教室:考试作弊系统、动态点名等功能
  10. 雅虎股东紧盯阿里巴巴IPO蛋糕