Установить изображение основным для карточки товара

1. user1419773 06.07.20 15:32 Сейчас в теме
Необходимо установить изображение из Интернета основным для карточки товара из справочника "Номенклатура". Использую Следующий код:
АдресКартинки = "Ссылка на файл из Интернета";
	Сервер = СтрЗаменить(АдресКартинки,"https://","");
	Соединение=Новый HTTPСоединение(Сервер);
        Запрос = Новый HTTPЗапрос(АдресКартинки);
        Ответ = Соединение.Получить(Запрос);
	ДвоичныеДанныеИзображения = Ответ.ПолучитьТелоКакДвоичныеДанные();
	АдресХранилищаИзображения = ПоместитьВоВременноеХранилище(ДвоичныеДанныеИзображения, Новый УникальныйИдентификатор());

		ПараметрыФайла = Новый Структура();
		ПараметрыФайла.Вставить("ВладелецФайлов",ЭлементНоменклатура.Ссылка);
		ПараметрыФайла.Вставить("Автор",ПараметрыСеанса.ТекущийПользователь);
		ПараметрыФайла.Вставить("ВремяИзмененияУниверсальное",ТекущаяДата());
		ПараметрыФайла.Вставить("ИмяБезРасширения",ЭлементНоменклатура.Наименование);
		ПараметрыФайла.Вставить("РасширениеБезТочки","jpg");
		ПараметрыФайла.Вставить("АдресФайлаВоВременномХранилище",АдресХранилищаИзображения);
		ПараметрыФайла.Вставить("ТекстХранилище","");
		ПрисоединеннаяНоменклатураСсылка = 
                РаботаСФайлами.ДобавитьФайл(ПараметрыФайла,АдресХранилищаИзображения);	
		ЭлементНоменклатура.ФайлКартинки = ПрисоединеннаяНоменклатураСсылка;

Показать


Файл добавляется, но при попытке его открытия мы получаем следующую ошибку(Скрин в прикрепленных файлах):

Может кто-то сможем объяснить, в чем заключается ошибка. Заранее спасибо!
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
8. andy_zhav 197 06.07.20 16:16 Сейчас в теме
(1)

Судя по всему не правильно построено HTTPСоединение.
У вас картинка на https сервере? Тогда должна быть другая инициализация соединения. К примеру такое:

Соединение = Новый HTTPСоединение("maps.googleapis.com",,,,,, Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(), Новый СертификатыУдостоверяющихЦентровWindows));


Мне кажется у вас в двоичных данных не те данные, что вы ожидаете. Может пустой бинарный файл....
29. user1419773 06.07.20 17:17 Сейчас в теме
Господа, спасибо всем за помощь.

Проблема заключалась в том, что я неправильно задавал соединение. Вот верный вариант:

Соединение = Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. andy_zhav 197 06.07.20 16:16 Сейчас в теме
(1)

Судя по всему не правильно построено HTTPСоединение.
У вас картинка на https сервере? Тогда должна быть другая инициализация соединения. К примеру такое:

Соединение = Новый HTTPСоединение("maps.googleapis.com",,,,,, Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(), Новый СертификатыУдостоверяющихЦентровWindows));


Мне кажется у вас в двоичных данных не те данные, что вы ожидаете. Может пустой бинарный файл....
9. user1419773 06.07.20 16:22 Сейчас в теме
(8) Картинка действительно на https сервере. Но Ваш пример не помог решить проблему.
10. user1419773 06.07.20 16:23 Сейчас в теме
14. alex_bob 246 06.07.20 16:36 Сейчас в теме
Можно как в (8), только вместо первого параметра АдресКартинки
17. user1419773 06.07.20 16:39 Сейчас в теме
(14) То что нужно заменить на АдресКартинки, я понял. Но ничего не изменилось, изображение все так же не открывается
13. alex-l19041 8 06.07.20 16:34 Сейчас в теме
(1) проверьте в винде настроено каким приложением открывать JPG
16. user1419773 06.07.20 16:38 Сейчас в теме
(13) Стандартное приложение "Фотографии"
2. alex_bob 246 06.07.20 16:06 Сейчас в теме
Прямо в точности такой код? Адрес картинки такой же как в коде или реальная ссылка?
3. user1419773 06.07.20 16:07 Сейчас в теме
(2) Реальная ссылка, здесь изменил для простоты понимания
4. VictorRGB2 13 06.07.20 16:09 Сейчас в теме
(3) проверьте, что по ссылке из интернетов приходит именно jpg, а то может там какой bmp, вот и ругается ...
понятно, что получаете двоичные данные, но должна быть возможность получить в ответ имя файла с расширением по идее..
andy_zhav; +1 Ответить
5. user1419773 06.07.20 16:11 Сейчас в теме
(4)Нет, по ссылке находится файл формата jpg. Уже проверял
11. VictorRGB2 13 06.07.20 16:30 Сейчас в теме
(5) еще иожно попробовать в файл помещать не через структуру и адрес в хранилище, а через имя файла и двоичные данные (типа ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилищаФайла))
т.е. сначала помещаете во временное хранилище, потом из него обратно дергаете двоичные данные и их уже записываете в файл
alex-l19041; +1 Ответить
19. user1419773 06.07.20 16:41 Сейчас в теме
(11)
потом из него обратно дергаете двоичные данные и их уже записываете в файл


Как это сделать, не подскажите?
6. user1419773 06.07.20 16:14 Сейчас в теме
(4)
понятно, что получаете двоичные данные, но должна быть возможность получить в ответ имя файла с расширением по идее


Не совсем понял. Можете пояснить?
7. alex_bob 246 06.07.20 16:16 Сейчас в теме
Для защищенного соединения необходимо устанавливать свойство ЗащищенноеСоединение. Посмотрите примеры в синтаксис-помощнике.
andy_zhav; +1 Ответить
12. user1419773 06.07.20 16:33 Сейчас в теме
(11)
потом из него обратно дергаете двоичные данные и их уже записываете в файл


Можно пример кода, пожалуйста? А то не совсем понял Вас
28. VictorRGB2 13 06.07.20 17:13 Сейчас в теме
(12) типа так

// сначала помещаем двоичные данные во временное хранилище
    ДвоичныеДанныеИзображения = Ответ.ПолучитьТелоКакДвоичныеДанные();
    АдресХранилищаИзображения = ПоместитьВоВременноеХранилище(ДвоичныеДанныеИзображения, Новый УникальныйИдентификатор());

// после чего получаем данные из временного хранилища и записываем по указанному пути на диск
	ДвоичныеДанныеФайла=ПолучитьИзВременногоХранилища(АдресХранилищаИзображения );
	ДвоичныеДанныеФайла.Записать(<ПолноеИмяСохраняемогоФайла>);
15. alex_bob 246 06.07.20 16:38 Сейчас в теме
Стоп. Имя сервера это не адрес всего ресурса без протокола. Вторая строка в вашем коде неверна!
18. user1419773 06.07.20 16:40 Сейчас в теме
(15) Вы имеете ввиду, что имя сервера в моем случае должно быть установлено "static.techspot.com"?
Если да, то я уже попробовал. Безрезультатно
20. user1419773 06.07.20 16:43 Сейчас в теме
(15)Сейчас у меня код выглядит так:
	Сервер = "static.techspot.com";
	Соединение = Новый HTTPСоединение(Сервер,,,,,,Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(), Новый СертификатыУдостоверяющихЦентровWindows));
    Запрос = Новый HTTPЗапрос("https://static.techspot.com/images/products/2018/loudspeakers/org/2019-02-13-product-9.jpg");
    Ответ = Соединение.Получить(Запрос);
	ДвоичныеДанныеИзображения = Ответ.ПолучитьТелоКакДвоичныеДанные();
	АдресХранилищаИзображения = ПоместитьВоВременноеХранилище(ДвоичныеДанныеИзображения, Новый УникальныйИдентификатор());
21. alex-l19041 8 06.07.20 16:52 Сейчас в теме
(20) а если
ДвоичныеДанныеИзображения
сохранить как файл, то откроется как картинка ?
22. user1419773 06.07.20 16:58 Сейчас в теме
(21) Делаю таким образом:
ДвоичныеДанныеИзображения.Записать("D:\1.jpg");


Файл на диске сохраняется, но не открывается. Ошибка такая же.
23. alex-l19041 8 06.07.20 17:00 Сейчас в теме
(22) можно этот файлик сюда ?
24. user1419773 06.07.20 17:01 Сейчас в теме
25. alex-l19041 8 06.07.20 17:06 Сейчас в теме
(24) там точно не изображение, а кусок HTML

<!DO CTYPE html>
<ht ml lang="en-US">
<head>
<title>Page not found - TechSpot</title>

<met a http-equiv="Content-Type" content="text/html; charset=utf-8">
<met a name="environment" content="production" />
<met a
26. alex-l19041 8 06.07.20 17:07 Сейчас в теме
(25) открывается в баузере
27. user1419773 06.07.20 17:10 Сейчас в теме
(26) Есть идеи как сохранить, чтоб было изображение?
30. alex-l19041 8 06.07.20 17:18 Сейчас в теме
(27) там еще
We're sorry, but the page you requested could not be found
32. andy_zhav 197 06.07.20 17:25 Сейчас в теме
(20) Запрос такой должен быть

 Запрос = Новый HTTPЗапрос("images/products/2018/loudspeakers/org/2019-02-13-product-9.jpg");
29. user1419773 06.07.20 17:17 Сейчас в теме
Господа, спасибо всем за помощь.

Проблема заключалась в том, что я неправильно задавал соединение. Вот верный вариант:

Соединение = Новый HTTPСоединение(Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
31. VictorRGB2 13 06.07.20 17:21 Сейчас в теме
(27) что-то пошло не так

<!DO CTYPE html>
<ht ml lang="en-US">
<head>
<title>Page not found - TechSpot</title> - не найдено ничего по адресу, потому и возвращает пустую html страницу
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот