使用场景:一般为在发起请求时,需要带着文件对象,即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;}}