2017-04-02 6 views
1

URL에서 이미지를 다운로드하고 싶습니다.이미지 다운로드 URL이 작동하지 않습니다 음 C#

내 클래스 :

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 컨트롤을 사용하여 URL에서 이미지를로드했지만 작동하지 않습니다.

웹 브라우저 컨트롤을 사용할 때 작동합니다.

내 문제는 무엇입니까?

답변

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); 
+0

감사합니다. –