Net5后台文件上传

前言

本来文件上传没有什么难的,但是公司的文件上传又封了一层,所以一直调不同,验证不通过,好在最后解决了。

1.调用要求

需要再Header上加俩个字段

image-20230920145110284

如果使用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可以添加文件内容、字段名、文件名。

image-20230920145637732

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;
    }
}

创作不易,如果感觉帮助到你了,还请多多支持,我会继续努力。

image-20230920150058033

posted @   peng_boke  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示