从Url下载图片不能正常工作C#

时间:2017-04-02 13:25:47

标签: c# image url download webclient

我想从网址下载图片。

我的课程:

public class MyWebClient : WebClient
{
    public TimeSpan Timeout { get; set; }

    protected override WebRequest GetWebRequest(Uri uri)
    {
        WebRequest request = base.GetWebRequest(uri);
        request.Timeout = (int)Timeout.TotalMilliseconds;

        ((HttpWebRequest)request).ReadWriteTimeout = (int)Timeout.TotalMilliseconds;

        return request;
    }
}

我的方法:

public void DownloadImage(string _url, string filename)
{
    try
    {
        var timeout = TimeSpan.FromMinutes(5);
        using (var webClient = new MyWebClient { Timeout = timeout })
        {
            byte[] imageData = webClient.DownloadData(_url);
            File.WriteAllBytes(filename, imageData);
        }
    }
    catch (Exception ex)
    {
    }
}

我的测试:

string url = "http://wallpaperswide.com/download/a_wooden_house_forest-wallpaper-1440x900.jpg";

DownloadImage(url, @"D:\test.jpg");

下载文件的大小错误,我无法打开图像文件。我使用PictureBox控件从网址加载图片,但它也无效。

当我使用网络浏览器控件时,它可以正常工作。

我的问题是什么?

1 个答案:

答案 0 :(得分:1)

看起来您尝试下载的这个特定网站需要指定User-Agent标头,否则它只返回一些html而不是图像。所以你可以欺骗它认为它是一个浏览器发出请求,你将得到预期的图像:

webClient.Headers["User-Agent"] = "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36";
var imageData = webClient.DownloadData(_url);
相关问题