Net5后台文件上传
前言
本来文件上传没有什么难的,但是公司的文件上传又封了一层,所以一直调不同,验证不通过,好在最后解决了。
1.调用要求
需要再Header上加俩个字段
如果使用DefaultRequestHeaders强制加"Content-Type":"multipart/form-data"就会报错,所以使用
var content = new MultipartFormDataContent();
var fileContent = new StreamContent(stream);
fileContent.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("multipart/form-data");
content.Add(fileContent,"file",Path.GetFileName(filePath));
但是可以使用DefaultRequestHeaders设置其他header,需要注意的是MultipartFormDataContent可以添加文件内容、字段名、文件名。
2.源码
代码做了修改,主要是设置header,传入formdata的参数
public async static Task<object> UploadFileAsync(string url, string filePath, string para1, string para2, string para3)
{
using (var stream = new FileStream(filePath, FileMode.Open))
{
var serviceProvider = new ServiceCollection().AddHttpClient().BuildServiceProvider();
var httpClientFactory = serviceProvider.GetService<IHttpClientFactory>();
var client = httpClientFactory.CreateClient();
var content = new MultipartFormDataContent();
var fileContent = new StreamContent(stream);
fileContent.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("multipart/form-data");
content.Add(fileContent,"file",Path.GetFileName(filePath));
client.DefaultRequestHeaders.Add("", "");
var formData = new Dictionary<string, string>
{
["para1"] = para1,
["para2"] = para2,
["para3"] = para3,
};
foreach (var kvp in formData)
{
content.Add(new StringContent(kvp.Value), kvp.Key);
}
var response = await client.PostAsync(url, content);
var resultContent = await response.Content.ReadFromJsonAsync<object>();
return resultContent;
}
}
创作不易,如果感觉帮助到你了,还请多多支持,我会继续努力。
分类:
日常啦
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!