首页 > 编程语言 >C# HttpClient 上传大文件带进度

C# HttpClient 上传大文件带进度

时间:2023-03-02 11:25:59浏览次数:40  
标签:ProgressMessageHandler StringContent C# content var new 上传 HttpClient

在Httpclient 上传文件时 需要显示进度,需要添加 ProgressMessageHandler 在NuGet中添加 引用
Microsoft.AspNet.WebApi.Client  一下是全部代码包括文件上传

  private async void button2_Click(object sender, EventArgs e)
        {
            HttpClientHandler handler = new HttpClientHandler();
            ProgressMessageHandler progressMessageHandler = new ProgressMessageHandler(handler);
            progressMessageHandler.HttpSendProgress += ProgressMessageHandler_HttpSendProgress;
            var httpClient = new HttpClient(progressMessageHandler);
            httpClient.Timeout = Timeout.InfiniteTimeSpan;
            var url = "http://10.141.40.176:5236/main/Uploadfile";
            var content = new MultipartFormDataContent();
            content.Add(new StringContent("ulami"), "Department");
            content.Add(new StringContent("1"), "taskname");
            content.Add(new StringContent("false"), "cover");
           // StringContent loginContent = new StringContent("{\"username\":\"admin\",\"password\":\"123456\"}", Encoding.UTF8, "application/json");
            var filepath = textBox1.Text;//97.6MB
            using var fileStream = new FileStream(filepath, FileMode.Open, FileAccess.Read);
            using var streamContent = new StreamContent(fileStream, 102400);
            content.Add(streamContent, "file", "测试文件1.ppt");
            var response = await httpClient.PostAsync(url, content);
            var str = await response.Content.ReadAsStringAsync();
            textBox2.Text = str;
            //    try
            //    {
            //        //上传服务器的地址(web服务)
            //        string address = "http://10.141.40.176:7245/main/dwj";
            //        //上传后文件保存的名称
            //        string saveName = DateTime.Now.ToString("yyyyMMddHHmmss");
            //        int count = FileUpload.UpLoad_Request(address, filePath, saveName,progressBar1);
            //        if (count > 0)
            //        {
            //            MessageBox.Show("上传文件成功!");
            //        }
            //        else
            //        {
            //            MessageBox.Show("上传文件失败!");
            //        }
            //    }
            //    catch (Exception ex)
            //    {

            //        Console.WriteLine(ex.Message);
            //    }
        }

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

  

 

标签:ProgressMessageHandler,StringContent,C#,content,var,new,上传,HttpClient
From: https://www.cnblogs.com/lisghxfdfgh/p/17171121.html

相关文章

  • CAD怎么删除图块注释?删除CAD图块注释步骤
    CAD设计过程中,有时候会在图纸中添加许多注释,如:文字注释,图块注释,标注样式注释等。当需要删除图纸中的CAD图块注释时,你知道该如何操作吗?本节课程小编就来给大家分享一下浩辰C......
  • Java/.Net双平台核心,Jvm和CLR运行异同点
    前言:本篇以.Net7.0.2CLR和OpenJDk19参照,解析下它们各自调用函数的异同。以下为个人理解。概述JDK大约5.9G,CLR大约7.6G,两者相差1.7G左右。root@tang-virtual-mac......
  • docker启动mysql注意事项
    1.编码问题登录mysql伪终端mysql查看编码showvariableslike'character%';宿主机在conf.d中添加配置my.cnf文件[client]default_character_set=utf8[mysqld]c......
  • ChatGPT “眼”中的开源数据库
    开源作为数据库发展的未来趋势之一,被冠以“数据库弯道超车的法宝”的称号。中国开源数据库产品正处于蓬勃发展的趋势,根据 墨天轮中国数据库流行度 ,截止2023年2月底已有46......
  • C语言--枚举类型 enum
    枚举是C语言中的一种基本数据类型,用于定义一组具有离散值的常量。在我们的程序开发时,对于某个变量有很多个不同的状态,比如,一天可以是星期一或星期二,如果我们不使用枚举......
  • 网页文件夹上传解决方案
    ​ 前言文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好......
  • 安防视频监控系统前端摄像机——DSP与SOC摄像机
       一、DSP摄像机  DSP(DigitalSignalProcessing)即数字信号处理,它是利用数字计算机或专用数字信号处理设备,以数值计算的方法对信号进行采集、变换、综合......
  • BOSHIDA 三河博电科技 AC/DC变换电源图及其工作原理
    BOSHIDA三河博电科技AC/DC变换电源图及其工作原理 1、逆变供电电源a.直流供电时,由直流供电电压经开关S1,隔离三极管VD1,保险丝FU2及由C2、C3、L1组成的π型滤波器后......
  • slf4j、logback、log4j、log4j2的区别和配置文件
    区别slf4j是一个日志接口,自己没有具体实现日志系统,只提供了一组标准的调用api,这样将调用和具体的日志实现分离,使用slf4j后有利于根据自己实际的需求更换具体的日志系统......
  • 【MySQL】导出到CSV
    http://www.yiidian.com/mysql/mysql-export-table-to-cvs.html  要将表导出为CSV文件,我们将使用SELECTINTO....OUTFILE语句。该语句是对LOADDATA命令的补充,该......