C# HttpClient以multipart/form-data形式 提交文件和其它参数

  调用文件接口,需要一个上传文件和一个Region参数,参考调用实例

复制代码
 public async Task<WebApiResult> UploadFile(UploadFileModel info, IList<IFormFile> files)
        {
            try
            {
                var postContent = new MultipartFormDataContent();
                string boundary = string.Format("--{0}", DateTime.Now.Ticks.ToString("x"));
                postContent.Headers.Add("ContentType", $"multipart/form-data, boundary={boundary}");
                var requestUri = "/api/File/UploadFiles";
                if (files.Any())
                {
                    var stream = files[0].OpenReadStream();
                    //files为文件key, files[0].FileName 为文件名称
                    postContent.Add(new StreamContent(stream, (int)stream.Length), "files", files[0].FileName);
                    //Region为请求文件接口需要的参数,根据调用接口参数而定
                    postContent.Add(new StringContent(info.Region), "Region");

                }
                var response = await _httpclient.PostAsync(requestUri, postContent);
                if (response.IsSuccessStatusCode)
                {
                    var responseStr = await response.Content.ReadAsStringAsync();
                    var responseObj = JsonConvert.DeserializeObject<WebApiResult>(responseStr);
                    return responseObj;
                }
                //WebApiResult为自定义反会值
                return new WebApiResult(ApiResultCode.Fail, "保存失败");
            }
            catch (Exception ex)
            {
                throw new Exception("保存file异常");
            }

        }
复制代码

posted @   低调码农哥!  阅读(13177)  评论(4编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示