Имя: Пароль:
1C
1С v8
Получить изображения по HTTP
0 Повелитель
 
15.04.12
10:59
Есть картинка:
http://2010.mir-otkrytok.com/new/images/0-02-110%20A.jpg
Нужно ее себе сохранить.

Пишу:
ipадрес = "2010.mir-otkrytok.com";
мСоединение = Новый HTTPСоединение(ipадрес);
Попытка
мСоединение.Получить("new/images/0-02-110%20A.jpg","C:\111.jpg");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
1 aleks-id
 
15.04.12
11:12
хвастаешь?
2 Повелитель
 
15.04.12
11:13
(1) Прошу прощения, кусов не вставил. Не получается так. Не знаю почему не работает.
Подскажите что не так делаю?
3 Wobland
 
15.04.12
11:15
(0) вот так делал я. обработка ЗагрузкаКартинкиПоСсылке

Процедура КнопкаВыполнитьНажатие(Кнопка)
   мАдрес=СтрЗаменить(Адрес, "http://", "");
   поз=0;
   Для й=0 По СтрДлина(мАдрес) Цикл
       Если Сред(мАдрес, й, 1)="/" Тогда
           поз=й;
       КонецЕсли;
   КонецЦикла;
   
   ИмяФайлаТам=Сред(мАдрес, поз+1);
   Ресурс=Лев(мАдрес, Найти(мАдрес, "/")-1);
   мАдрес=Сред(мАдрес, Найти(мАдрес, "/")+1);
   Попытка
       Если Константы.ИспользоватьПрокси.Получить() Тогда
           Прокси=Новый ИнтернетПрокси;
           Прокси.Пользователь=Константы.ЛогинПрокси.Получить();
           Прокси.Пароль=Константы.ПарольПрокси.Получить();
           http=Новый HTTPСоединение(Ресурс, , , , Прокси);
       Иначе
           http=Новый HTTPСоединение(Ресурс);
       КонецЕсли;
   Исключение
       Предупреждение("Ошибка соединения"+Символы.ПС+ОписаниеОшибки());
       Возврат;
   КонецПопытки;
   
   ИмяФайлаТут=ПолучитьИмяВременногоФайла("jpg");
   Попытка
       http.Получить(мАдрес, ИмяФайлаТут);
   Исключение
       Предупреждение("Ошибка получения файла"+Символы.ПС+ОписаниеОшибки());
   КонецПопытки;
   
   ф=Новый Файл(ИмяФайлаТут);
   ВыбраннаяКартинка=Новый Картинка(ИмяФайлаТут);        
   спр=Справочники.Картинки.СоздатьЭлемент();
   спр.Наименование=ПолучитьУникальноеНаименование(Лев(ИмяФайлаТам, СтрДлина(ИмяФайлаТам)-4));
   спр.Родитель=Справочники.Картинки.ИзИнтернета;
   спр.Комментарий=Адрес;
   спр.Картинка=Новый ХранилищеЗначения(ВыбраннаяКартинка);
   спр.Записать();
КонецПроцедуры
4 Ахиллес
 
15.04.12
11:21
(2) Нахрен ты в обработке написал Сообщить(ОписаниеОшибки()); ?
5 Wobland
 
15.04.12
11:22
(4) чо? всю жизнь так делал, что я пропустил?
6 Повелитель
 
15.04.12
11:23
(3) Спасибо подставил в процедуру свой значения, заработало.
7 Wobland
 
15.04.12
11:26
(6) на здоровье. вспомнил по ходу, что в этом месте получилось создать пустой функциональный цикл в 1С

Функция ПолучитьУникальноеНаименование(Наим)
   спр=Справочники.Картинки.НайтиПоНаименованию(Наим);
   Если спр.Пустая() Тогда
       Возврат Наим;
   КонецЕсли;
   ПолучитьНовоеНаименование(Наим);
   Пока НЕ Справочники.Картинки.НайтиПоНаименованию(ПолучитьНовоеНаименование(Наим)).Пустая() Цикл
   КонецЦикла;
   Возврат НовоеНаименование;
КонецФункции
8 Повелитель
 
15.04.12
11:26
(6) Теперь и мой код заработал, че за глюк был я не понял.
Всем спасибо, тему можно закрывать.
9 Повелитель
 
15.04.12
11:27
(7) Спасибо.
10 Wobland
 
15.04.12
11:27
(8) мСоединение = Новый HTTPСоединение(ipадрес); у тебя без проверки был как минимум
11 Ахиллес
 
15.04.12
11:31
(5) Это, я к тому, что 1С ведь ему не написала в сообщении "Не знаю почему не работает."
Если сообщение об ошибке есть, то мог бы и сюда его написать.
12 Wobland
 
15.04.12
11:32
(11) ну это же миста - форум телепатов ;)
13 Повелитель
 
15.04.12
11:40
(11) Поправлю.
14 Torquader
 
15.04.12
13:09
Картинки-картинками, но нужно не забывать про поле Referrer - некоторые сервера без этого поля вместо картинки выдают html-страницу, со вставленной в неё картинкой.
Так что надо проверять в ответе тип содержимого в заголовке.
Кроме того, один раз загрузив картинку мы инициализируем cache, а в следующий раз картинка уже грузится из него, и никто referrer не проверяет.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс