【.net/.net core】使用form-data方式发起post请求

本文介绍了如何在.NET中使用HttpClient发送POST请求,携带File类型的文件和普通参数,通过MultipartFormDataContent构建multipart/form-data请求体,包括了下载图片、文件流转字节数组及网络图片下载并转换为字节数组的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 使用场景:一般为在发起请求时,需要带着文件对象,即File类型参数。

public async void  PostByFormData() {
            //创建一个MultipartFormDataContent对象,构建multipart/form-data请求体
            MultipartFormDataContent pushMemberParams = new MultipartFormDataContent();
            string fileUrl= "https://localhost:8081/image/123.png";//模拟网络图片/文件

            // 使用HttpClient获取图片/文件数据
            byte[] fileBtyes = await DownloadImageBytes(fileUrl);

            // 创建HttpClient实例
            HttpClient client = new HttpClient();
            // 添加文件内容到multipart/form-data内容中
            pushMemberParams.Add(new StreamContent(new MemoryStream(fileBtyes )), "fileKey", "123.png");//此处需注意,文件需要添加为流内容,需要先将字节数组转换为流类型,然后添加
            pushMemberParams.Add(new StringContent("张三"), "Name");
            var response = await client.PostAsync("https://localhost:8082/saveFile", pushMemberParams);//https://localhost:8082/saveFil为处理请求接口地址
            // 确保响应成功
            response.EnsureSuccessStatusCode();
            // 读取响应内容
            var responseBody = await response.Content.ReadAsStringAsync();
            //需要返回内容可在此处添加,对应需要修改方法的返回类型
        }

将文件流转换为字节数组方法

/// <summary>
        /// 将文件流转换为字节数组
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public byte[] ConvertFileStreamToByteArray(string filePath)
        {
            // 创建一个FileStream对象来读取文件
            using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                // 获取文件的大小
                int length = (int)fileStream.Length;
                byte[] byteArray = new byte[length];

                // 从文件流中读取数据到字节数组中
                fileStream.Read(byteArray, 0, length);
                return byteArray;
            }
        }

将网络图片地址转换为字节数组方法

/// <summary>
        /// 下载图片
        /// </summary>
        /// <param name="imageUrl"></param>
        /// <returns></returns>
        static async Task<byte[]> DownloadImageBytes(string imageUrl)
        {
            using (HttpClient client = new HttpClient())
            {
                // 发起GET请求
                HttpResponseMessage response = await client.GetAsync(imageUrl);
                response.EnsureSuccessStatusCode(); // 检查响应状态码是否成功
                byte[] imageBytes = await response.Content.ReadAsByteArrayAsync(); // 读取内容为字节数组
                return imageBytes;
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值