2012-11-07 3 views
2

이것은 내가 지금까지 가지고 있지만 문제가되고 있습니다.이 페이지의 링크를 기반으로 웹 페이지에서 사진을 다운로드하려면 어떻게합니까?

페이지 https://xxxxxxxx.zendesk.com/tickets/33126에는 .jpg 이미지에 대한 링크가 포함되어 있습니다. 이 이미지를 다운로드하고 싶습니다. 나는 문제는 여기서 발생 등

I'm having an issue with my code at the end. I'll explain there. 

    public static void GetTicketAttachments(string url) 
    { 
     GetImages("https://xxxxxxxx.zendesk.com/tickets/33126"); 
    } 

static void GetImages(string url) 
    { 
     string responseString; 
     HttpWebRequest initialRequest = (HttpWebRequest)WebRequest.Create(url); 
     using (HttpWebResponse initialResponse = (HttpWebResponse)initialRequest.GetResponse()) 
     { 
      using (StreamReader reader = new StreamReader(initialResponse.GetResponseStream())) 
      { 
       responseString = reader.ReadToEnd(); 
      } 

      List<string> imageset = new List<string>(); 
      Regex regex = new Regex(@"f=""[^""]*jpg|bmp|tif|gif|png", RegexOptions.IgnoreCase); 
      foreach (Match m in regex.Matches(responseString)) 
      { 
       if (!imageset.Contains(m.Value)) 
        imageset.Add(m.Value); 
      } 
      for (int i = 0; i < imageset.Count; i++) 
       imageset[i] = imageset[i].Remove(0, 3); 
      totalFiles = imageset.Count; 
      currentFiles = totalFiles; 

      foreach (string f in imageset) 
      { 
       ThreadPool.QueueUserWorkItem(new WaitCallback(DownloadImage), f); 
      } 
     } 
    } 

모든 .JPG, .gif 참고를 찾기 위해 페이지를 스캔해야하므로 페이지에 여러 이미지를 가질 수있다. 오브젝트 "path"는 어떤 이유로 든 항상 null입니다. 따라서 그림을 다운로드 할 수 없습니다.

static void DownloadImage(object path) 
    { 
     currentFiles--; 
     path = Path.GetFileName(path.ToString()); 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(path.ToString()); 
     using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
     { 
      Image image = Image.FromStream(response.GetResponseStream()); 
      image.Save(@"C:\" + Path.GetFileName(path.ToString())); 
     } 
    } 

누구에게 무슨 문제가 있을지 알고 있습니까? "그림 개수"는 실제로 1 (페이지의 한 그림에 대한 링크)을 세고 있습니다.

+0

또한 'f'값이 제대로 닫히지 않는 문제가 발생할 수 있습니다. foreach 루프에 내부 변수가 필요합니다. – Tejs

+0

f가 null입니까? 또한, 링크가 상대적인 경우 절대적으로 만들어야합니다. – bmm6o

+0

@ bmm6o, 예 F는 null입니다. 어떤 이유로 .jpg가 응답 문자열에 표시되지 않습니다. –

답변

관련 문제