C# 使用HttpClient上传文件并附带其他参数的步骤
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上传文件并附带其他参数的步骤相关推荐
- C# HttpClient上传文件并附带其它参数
1.Fiddler抓包参数详情 Content-Type: multipart/form-data; boundary="8d9ade1fd906a6a" Content-Leng ...
- [原创]使用ajaxFileUpload.js上传文件时附带额外参数。
最近公司的一个项目涉及到导入Excel的功能,于是就想到用ajaxFileUpload来实现上传文件,因为用过很多次了,网上也有很多文章介绍.使用方法不表.但是在附带参数这个环节卡住了:文件可以上传到 ...
- FormData上传文件同时附带其他参数
前端js代码: function fileSubmit() {var formData = new FormData();formData.append("file",$(&quo ...
- elementUI中el-upload上传文件时附带额外参数传递
公司vue项目中,文件上传这块先前一直使用的单独接口,即只是单纯的上传文件接口,上传完了拿到文件的id之后再调用文件关联绑定关系的接口,上传的代码如下即可:需要上传的url地址 以及hearders中 ...
- [转]httpclient 上传文件、下载文件
用httpclient4.3 post方式推送文件到服务端 准备:httpclient-4.3.3.jar:httpcore-4.3.2.jar:httpmime-4.3.3.jar/*** 上传文件 ...
- HttpClient上传文件传入MultipartFile类型
通常我们在使用httpclient的时候,一把都是使用get或者postd的方式传输一些数据.在近期的项目中有这样的一个需求,我需要通过httpclient去调用一个写好的文件上传的接口,接口中是使用 ...
- HttpClient上传文件到微信素材乱码问题解决
在开发微信第三方公众平台的时候,需要上传图片.语音等文件到微信服务器.当文件名存在中文时会出现乱码.网上搜了一大堆文章,大部讲什么设置编码啥的,放到微信素材上传这个场景就是用不了,试了各种方式,依然是 ...
- httpclient 上传企业微信临时素材文件,返回结果一直是44001,提示媒体文件是空;(httpclient上传文件并且绕过https)
/*** 使用httpclint 发送文件* @param fileInputStream* 上传的文件* @return 响应结果*/public static String uploadFile( ...
- ElementUI中el-upload怎样上传文件并且传递额外参数给Springboot后台进行接收
场景 需要将Excel中的数据导入到数据库中,就会用到文件上传的功能. 这里使用ElementUI的el-upload控件实现文件上传. 注: 博客: https://blog.csdn.net/ba ...
最新文章
- eclipse中配置SVN
- 王者传奇服务器维护一般多长时间,9377王者传奇合理分配刷图时间其实很重要...
- regexbuddy使用记录
- 通过Net Manager 配置Oracle 11g本地监听服务(listener service)
- 手机服务器共享信息,手机云共享服务器
- 点计算机没有本地磁盘,快速解决WinPE系统下没有本地磁盘的方法
- matplotlib 等高线的绘制 —— plt.contour 与 plt.contourf
- 推荐几款好用的CRM
- cv方向有哪些_【星球知识卡片】视频分类与行为识别有哪些核心技术,对其进行长期深入学习...
- bat批处理常用命令
- 详解数据库锁机制和原理
- 新广告法违规词、敏感词在线检测工具
- PMP-32项目成本管理
- 车载TBOX,4G北斗/GPS双模定位
- Android 查询设备信息c/c++常用方法
- 20180710使用gh
- ACPC2015 K 树的直径
- 用Python爬取新型冠状病毒肺炎实时数据,pyecharts v1.x绘制省市区疫情地图
- liunx邮件群发服务器,邮件发送服务器 Postfix
- ui动效 unity_Unity - UIWidgets 6. 显示列表
热门文章
- 猜数字小游戏(原创)
- flutter友盟分享_集成推送那点事-友盟/Mob-Flutter/FCM
- 黑马程序员_Java_异常
- 硬盘安装arch linux,ArchLinux硬盘安装
- 【后端教程】低代码起势,为什么它有希望“干掉”开发? | 甲子光年
- service mysql k8s_Kubernetes/K8S基础使用方法总结【五】——Service
- python爬取京东笔记本标题、品牌、价格、评论数
- Altera DDR3调试记录
- InfluxDB学习整理
- 最小公倍数c语言调用该函数,C语言中如何调用函数求最大公约数和最小公倍数...