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