C# HttpClient 上传带进度

C# HttpClient 上传带进度

在Httpclient 上传文件时 需要显示进度,需要添加 ProgressMessageHandler 在NuGet中添加 引用
Microsoft.AspNet.WebApi.Client 就因为这个引用找了好久,在这做个记录以后不迷路 。。。。

using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
using System.Net.Http.Handlers;
using System.Threading.Tasks;


namespace UpLoadFile
{
    public class HttpHelper
    {
        public async Task<ValueTuple<bool,string>> Upload(string url,List<string> filePath,Dictionary<string,string> values)
        {


            HttpClientHandler handler = new HttpClientHandler();
            ProgressMessageHandler progressMessageHandler = new ProgressMessageHandler(handler);
            progressMessageHandler.HttpSendProgress += ProgressMessageHandler_HttpSendProgress;

            using (HttpClient httpClient = new HttpClient(progressMessageHandler))
            {
                using (var multipartFormData = new MultipartFormDataContent())
                {
                    if (values.Count > 0)
                    {
                        foreach (var item in values)
                        {
                            multipartFormData.Add(new StringContent(item.Value), item.Key);
                        }
                    }
                    foreach (var file in filePath)
                    {
                        var content = File.ReadAllBytes(file);
                        FileInfo fileInfo=new FileInfo(file);

                        multipartFormData.Add(new ByteArrayContent(content), "files", fileInfo.Name);
                    }
                    var response = await httpClient.PostAsync(url, multipartFormData);
                    if (response.IsSuccessStatusCode)
                    {
                        var data = await response.Content.ReadAsStringAsync();
                        return (true, data);
                    }
                    else
                    {
                        var data = await response.Content.ReadAsStringAsync();
                        return (false, data);
                    }
                }
            }


        }

        private void ProgressMessageHandler_HttpSendProgress(object sender, HttpProgressEventArgs e)
        {
            Console.WriteLine(e.ProgressPercentage + "%");
        }

    }


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值