首页 > 编程语言 >[c#]WebClient异步下载文件并显示进度

[c#]WebClient异步下载文件并显示进度

时间:2023-12-29 11:14:35浏览次数:34  
标签:异步 string c# System client saveDir file using WebClient

https://www.cnblogs.com/wolf-sun/p/6699733.html

在项目开发中经常会用到下载文件,这里使用winform实现了一个带进度条的例子。

一个例子

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Wolfy.DownLoad
{
public partial class MainFrm : Form
{
private string _saveDir;
public MainFrm()
{
InitializeComponent();
_saveDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "download");
}

private void MainFrm_Load(object sender, EventArgs e)
{

if (!Directory.Exists(_saveDir))
{
Directory.CreateDirectory(_saveDir);
}

}

private void btnDownLoad_Click(object sender, EventArgs e)
{
string imageUrl = "http://image.3761.com/nvxing/2016022921/2016022921382152113.jpg";

string fileExt = Path.GetExtension(imageUrl);
string fileNewName = Guid.NewGuid() + fileExt;
bool isDownLoad = false;
string filePath = Path.Combine(_saveDir, fileNewName);
if (File.Exists(filePath))
{
isDownLoad = true;
}
var file = new FileMessage
{
FileName = fileNewName,
RelativeUrl = "nvxing/2016022921/2016022921382152113.jpg",
Url = imageUrl,
IsDownLoad = isDownLoad,
SavePath = filePath
};

if (!file.IsDownLoad)
{

string fileDirPath = Path.GetDirectoryName(file.SavePath);
if (!Directory.Exists(fileDirPath))
{
Directory.CreateDirectory(fileDirPath);
}
try
{
WebClient client = new WebClient();
client.DownloadFileCompleted += client_DownloadFileCompleted;
client.DownloadProgressChanged += client_DownloadProgressChanged;
client.DownloadFileAsync(new Uri(file.Url), file.SavePath, file.FileName);
}
catch
{

}

}
}
void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
if (e.UserState != null)
{
this.lblMessage.Text = e.UserState.ToString() + ",下载完成";
}
}

void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
this.proBarDownLoad.Minimum = 0;
this.proBarDownLoad.Maximum = (int)e.TotalBytesToReceive;
this.proBarDownLoad.Value = (int)e.BytesReceived;
this.lblPercent.Text = e.ProgressPercentage + "%";
}
}
}

 

 

标签:异步,string,c#,System,client,saveDir,file,using,WebClient
From: https://www.cnblogs.com/Dongmy/p/17934320.html

相关文章

  • 【dotnet】啥?这家伙写gRpc 居然没有pb文件
    使用.NET的代码优先gRPC服务和客户端当整个系统使用.NET时,代码优先是一个不错的选择:可以在.NET服务器和客户端之间共享.NET服务和数据协定类型。无需在 .proto 文件和代码生成过程中定义协定。不建议在具有多种语言的polyglot系统中使用代码优先。.NET服务......
  • centos7 升级curl-8.2.1 支持http2 (yum update)
    转载于:https://www.cnblogs.com/huangweimin/articles/15882913.htmlCentOS7默认的curl版本最新就到7.29 ,它是不支持http2的#curl--versioncurl7.29.0(x86_64-redhat-linux-gnu)libcurl/7.29.0NSS/3.53.1zlib/1.2.7libidn/1.28libssh2/1.8.0Protocols:dict......
  • Cisco Secure Client 5.1.1.42 (macOS, Linux, Windows & iOS, Andrord) - VPN 和远程
    CiscoSecureClient5.1.1.42(macOS,Linux,Windows&iOS,Andrord)-VPN和远程访问客户端思科安全客户端(包括AnyConnect)作者主页:sysin.orgCiscoSecureClient(includingAnyConnect)思科安全客户端(包括AnyConnect)安全访问只是开始您的团队需要轻松访问公司资源和私有应......
  • Amazon S3 CORS 实战
    AmazonS3(SimpleStorageService)是一项强大的对象存储服务,而跨域资源共享(CORS)是为了在Web应用中安全实现跨域数据传输而设计的标准。在本文中,我们将深入探讨如何在AmazonS3上实战配置CORS,确保安全地处理跨域请求。1.CORS概述1.1同源策略回顾同源策略是浏览器的安全机制,限......
  • 【PowerShell】PowerShell 脚本批量检测公司服务器是否存在 WannaCry 漏洞
    本文前提被检测的计算机启用的powershell远程管理的功能;这是另外的课题,我之前的文章有专门介绍过,如果对这部分不太清楚的话可以翻翻我之前的博客文章。关于本文要使用PowerShell脚本检查计算机是否存在WannaCry漏洞,可以执行以下步骤:检查操作系统补丁:WannaCry漏洞主要影响未安......
  • JDBC快速入门:看我如何用JDBC数据库连接池,轻松解决大量并发请求问题!
    我们已经知道JDBC是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,也是大多数Java开发者与数据库打交道的必备工具。但是,你是否知道,JDBC在处理大量并发请求时,可能会遇到一些问题?这就是我们今天要讨论的主题——JDBC数据库连接池。<br>首先,让我们来了解一下什么是数据......
  • Amazon API Gateway CORS 实战
    AmazonAPIGateway是构建和部署RESTfulAPI的托管服务,而跨域资源共享(CORS)是为了在Web应用中安全实现跨域数据传输而设计的标准。在本文中,我们将深入探讨如何在AmazonAPIGateway上实战配置CORS,确保安全地处理跨域请求。1.CORS概述1.1同源策略回顾同源策略是浏览器的安......
  • 华为云CCE集群健康中心:一个有专家运维经验的云原生可观测平台
    本文分享自华为云社区《新一代云原生可观测平台之华为云CCE集群健康中心》,作者:云容器大未来。"Kubernetes运维确实复杂,这不仅需要深入理解各种概念、原理和最佳实践,还需要对集群的健康状态、资源利用率、容器的稳定性等多个方面进行风险评估。当集群出现故障时,我们通常需要花费大量......
  • 鸿蒙(HarmonyOS 3.1) DevEco Studio 3.1开发环境汉化
    鸿蒙(HarmonyOS3.1)DevEcoStudio3.1开发环境汉化一、安装环境操作系统: Windows10专业版IDE:DevEcoStudio3.1SDK:HarmonyOS3.1二、设置过程打开IDE,在第一个菜单File编辑中找到Settings...菜单编辑在Setting...中找到Plugins菜单编辑在Type/toseeoptions输入框中输入Chi......
  • 荣誉见证|亚数荣获 ISC 2023数字安全创新能力百强!
    12月27日,由北京经济和信息化局、通州区政府指导,中关村科技园区通州园管理委员会、ISC平台主办,北京通州发展集团有限公司、赛迪顾问协办的数字安全技术创新论坛暨ISC2023数字安全创新能力百强颁奖典礼在北京落下帷幕。亚数信息科技(上海)有限公司(以下简称亚数)MatterPKI解决方案凭借......