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 (페이지의 한 그림에 대한 링크)을 세고 있습니다.
또한 'f'값이 제대로 닫히지 않는 문제가 발생할 수 있습니다. foreach 루프에 내부 변수가 필요합니다. – Tejs
f가 null입니까? 또한, 링크가 상대적인 경우 절대적으로 만들어야합니다. – bmm6o
@ bmm6o, 예 F는 null입니다. 어떤 이유로 .jpg가 응답 문자열에 표시되지 않습니다. –