C# HttpClient 上传大文件带进度
在Httpclient 上传文件时 需要显示进度,需要添加 ProgressMessageHandler 在NuGet中添加 引用
Microsoft.AspNet.WebApi.Client 一下是全部代码包括文件上传
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | 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 + "%" ); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!