我正在使用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);
}
}
2条答案
按热度按时间eimct9ow1#
你正在调用
DownloadFileAsync
,这是一个非阻塞方法,这意味着它将在文件完全下载之前完成。你有两个选择:
1-将代码更改为同步:
这样,该函数将在下载文件后完成。
2-Hook到
DownloadFileCompleted
事件:这将在文件下载完成后引发事件
DownloadFileCompleted
*。你可以把事件挂接到一个函数上,我把它挂接到一个lambda函数上只是一个例子。另外,您应该检查e.Cancelled
和e.Error
以确保下载成功。第二种方法的好处是不会阻止应用程序等待下载结束。
此外,如果使用第二种方法,则必须删除
using
,否则将在下载文件之前处理WebClient
。yxyvkwin2#
你可能需要在你的webclient示例中分配一个用户代理,这样你就不会被你请求图像的服务器阻止或拒绝回复。
“Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299”
这是用户代理值,适用于我的情况,因为一些服务器甚至不回复,如果他们没有找到“边缘...”在您的用户代理参数。
在这里看到我的特殊问题…使用WebClient为什么无法下载以下图像链接?我不想使用WebClient以外的任何东西