Webclient没有下载图像

问题描述

我正在使用C#Webclient下载图像,但是有一个问题,因为该图像为0 kb。
在此过程中我没有收到错误消息。

有人可以帮我吗?
谢谢

private static void Download(string _caminhoArquivo,string _nomeArquivo)
        {
            try
            {
                using (WebClient client = new WebClient())
                {
                    string _arquivodownl = "C:\\Img\\ImagensMensagens\\" + _nomeArquivo;
                    string url = "https://p2.trrsf.com/image/fget/cf/940/0/images.terra.com/2020/10/16/2020-10-16T140412Z_1_LYNXMPEG9F1AV_RTROPTP_4_BRAZIL-POLITICS.JPG";
                    client.DownloadFileAsync(new Uri(url),_arquivodownl);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }

解决方法

您正在调用DownloadFileAsync,这是一种非阻塞方法,这意味着它将在完全下载文件之前 完成。

您有两个选择:

1-将代码更改为同步:

 client.DownloadFile(new Uri(url),_arquivodownl);

通过这种方式,该功能将在下载文件后完成。

2-钩住DownloadFileCompleted事件:

 client.DownloadFileCompleted += (o,e) => { /* Process here the file */ }
 client.DownloadFileAsync(new Uri(url),_arquivodownl);

文件下载完成后,这将引发事件DownloadFileCompleted 。您可以将事件连接到函数,我仅以示例将其连接到lambda。另外,您应该检查e.Cancellede.Error,以确保下载成功。

第二种方法的好处是不会阻止您的应用程序等待下载结束。

此外,如果您使用第二种方法,则必须删除using,否则您将在文件下载之前处理WebClient