Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Загрузка картинки с сайта


Автор: davandr 15.1.2010, 13:49
Задача вроде как примитивная. Необходимо по данному урлу получить картинку с сайта и сохранить на диске. Ниже пример функции, которой я делаю это. Почему-то работает не для всех сайтов.

Например, http://www.linkedin.com/favicon.ico или http://vkontakte.ru/favicon.ico не тянет. 

Код

public static System.Drawing.Image GetImage(string url)
        {
            try
            {
                var request = (HttpWebRequest)WebRequest.Create(url);
                //request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
                request.UserAgent = "Mozila/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2;";
                request.Accept = "image/gif, image/x-icon, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
                //request.Headers.Add("Accept-Language", "ru");

                // Set some reasonable limits on resources used by this request
                request.MaximumAutomaticRedirections = 4;
                request.MaximumResponseHeadersLength = 4;
                // Set credentials to use for this request.
                request.Credentials = CredentialCache.DefaultCredentials;
                var response = (HttpWebResponse)request.GetResponse();
                try
                {
                    // Get the stream associated with the response.
                    var receiveStream = response.GetResponseStream();

                    // Pipes the stream to a higher level stream reader with the required encoding format. 
                    var binReader = new BinaryReader(receiveStream);
                    //byte[] data = binReader.ReadBytes(Convert.ToInt32(response.ContentLength));

                    try
                    {
                        return System.Drawing.Image.FromStream(binReader.BaseStream);
                    }
                    finally
                    {
                        binReader.Close();
                    }
                }
                finally
                {
                    response.Close();
                }
            }
            catch (Exception ex)
            {
                return null;
            }
        }

Автор: Bestoloch 16.1.2010, 17:00
вероятнее всего это из-за разницы в content type (image/x-icon, image/icons).

Автор: diadiavova 16.1.2010, 19:24
Код

var wc = new WebClient();
wc.DownloadFile("http://www.blahblahblah.com/img.jpg", "c://img.jpg");
 smile 

Автор: davandr 18.1.2010, 15:16
Всем спасибо.

На счет разницы в content type (image/x-icon, image/icons). - странно, но нет :(

Код

var wc = new WebClient();
wc.DownloadFile("http://www.blahblahblah.com/img.jpg", "c://img.jpg");


Конечно же отработало smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)