Имя: Пароль:
1C
1С v8
Скачать картинку с яндекс диска на пк Ут 10
, ,
0 MAPATNK2
 
naïve
13.05.21
21:21
Всем доброго дня. Есть ссылка на картинку яндекса. Вот пример https://yadi.sk/d/jGbwG3PGpt3am/LM0103C.jpg
Нужно скачать её на пк и желательно добавить в номенклатуру. Делал так:

1 способ)

                                        SSL = Новый ЗащищенноеСоединениеOpenSSL();
                    СерверПриемник = "yadi.sk";
                    Яндекс = новый HTTPСоединение("yadi.sk",,,,,,SSL);
                    HTTPЗапрос = Новый HTTPЗапрос(LM0103C.jpg);
                    
                                    Ответ = Яндекс.Получить(HTTPЗапрос,"D:\Картинки\LM0103C.jpg);

2 Способ)

                                       КопироватьФайл (https://yadi.sk/d/jGbwG3PGpt3am/LM0103C.jpg, "D:\Картинки\LM0103C.jpg");
                    
                    МояКартинка = Новый Картинка("D:\Картинки\LM0103C.jpg");  
                    
                    НовыйОбъект = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
                    
                    ВыбранноеИзображение = Новый Картинка("D:\Картинки\LM0103C.jpg", Ложь);
                    НовыйОбъект.Наименование = НашаПозиция.Код;
                    НовыйОбъект.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
                    НовыйОбъект.Хранилище = Новый ХранилищеЗначения(ВыбранноеИзображение, Новый СжатиеДанных);
                    
                    НовыйОбъект.Объект = НашаПозиция.Ссылка;
                    НовыйОбъект.Записать();

                    //

                    НашаПозиция.ОсновноеИзображение = НовыйОбъект;



Вообще, при сохранении картинки на диск она весит 1 Кб и её не возможно открыть.
Как скачать картнку с яндекса зная ссылку на изображение или сразу загрузить её в товар?
1 MAPATNK2
 
naïve
13.05.21
21:41
ну и вот еще


                                        SSL = Новый ЗащищенноеСоединениеOpenSSL();
                    Соединение = Новый HTTPСоединение("yadi.sk",,,,,,SSL);
                            Запрос =  HTTPЗапрос("/d/jGbwG3PGpt3am/LM0103C.jpg");
                       Ответ = Соединение.Получить(Запрос);
                       ДвоичныеДанныеКартинки = Ответ.ПолучитьТелоКакДвоичныеДанные();
                    ДвоичныеДанныеКартинки.Записать("D:\Картинки\LM0103C.jpg");
2 MAPATNK2
 
naïve
13.05.21
21:43
в 1 способе 4-ую строку переделал на это:
HTTPЗапрос("/d/jGbwG3PGpt3am/LM0103C.jpg"); тоже не помогло.
3 Ненавижу 1С
 
гуру
13.05.21
21:43
4 MAPATNK2
 
naïve
13.05.21
21:46
(3) второй сопосб. Я так и делал. Только не в корень D, а в папку.
5 MAPATNK2
 
naïve
13.05.21
21:46
(3) В итоге файл 1 Кб нечитаемый.
6 MAPATNK2
 
naïve
13.05.21
21:50
(3) если нужна какая то особая ссылка на скачивание, то поставщик такие ссылки не предоставляет. Только такие https://yadi.sk/d/jGbwG3PGpt3am/LM0103C.jpg
7 MAPATNK2
 
naïve
13.05.21
21:52
(3) попробуйте сами мою картинку скачать этой строчкой кода. У мнея любыми способами картинка весит 1 кб и не читается.
8 Недопустимый
 
13.05.21
21:58
(0) в браузере картинка открывается?
9 MAPATNK2
 
naïve
13.05.21
21:59
(8) конечно
10 pechkin
 
13.05.21
22:02
Получить хтмл страницу, найти там картинку и вот ее уже скачать
11 MAPATNK2
 
naïve
13.05.21
22:03
(10) ??????????????
12 MAPATNK2
 
naïve
13.05.21
22:05
(10) Огонь!  Только как программно теперь html страницу получить?
13 pechkin
 
13.05.21
22:07
Также как и картинку получал, только на выходе будет не жпг файл, а хтмл.потом его парсить и тд
14 pechkin
 
13.05.21
22:08
Главное чтобы оно не скриптом подгружалось
15 MAPATNK2
 
naïve
13.05.21
22:09
(13) не понятно, к сожалению
16 pechkin
 
13.05.21
22:10
У тебя в (0) весь код уже есть
17 MAPATNK2
 
naïve
13.05.21
22:11
(16) дак какой из. Я просто не понимаю, как получить ссылку html программно. Руками просто , прогарммно без понятия как.
18 pechkin
 
13.05.21
22:13
Ты сам файл уже получил?
Потом чтение хтмл и купи xpath
19 pechkin
 
13.05.21
22:13
*кури
20 mikecool
 
13.05.21
22:13
может там редирект?
21 MAPATNK2
 
naïve
13.05.21
22:14
(18) Я не получал никакого файла. Что за xpath. А простых способов нет?
22 MAPATNK2
 
naïve
13.05.21
22:21
23 Ненавижу 1С
 
гуру
13.05.21
22:30
(5) (6) (7) у меня ок. Вы его недоскаченным читаете
24 Builder
 
13.05.21
22:51
(22) С Я-диска по короткой ссылке ничего не скачать просто так.
Видел сервис, который переделывает короткие ссылки в полноценные для скачивания.
25 MAPATNK2
 
naïve
13.05.21
22:53
(23) Как его доскачать?
26 pechkin
 
13.05.21
22:55
(21) простых способов нет
27 pechkin
 
13.05.21
22:56
Короткая ссылка это не картинка, а хтмл страница
28 MAPATNK2
 
naïve
13.05.21
22:56
(23) т.е вы прям такой код используете и у вас все ок?

Путь1 = "https://yadi.sk/d/jGbwG3PGpt3am/LM0103C.jpg";
Путь2 = "D:\LM0103C.jpg";
КопироватьФайл(Путь1, Путь2);
29 MAPATNK2
 
naïve
13.05.21
22:56
(27) ок, а примеры есть какие нибудь? В слепую ведь не возможно понять, что делать.
30 pechkin
 
13.05.21
22:58
Делай (28) только путь2 = "файл.html"
Это шаг 1
31 MAPATNK2
 
naïve
13.05.21
23:00
(30) Ага, пробовал. Пробовал вручную его кстати открыть, показывает ссылку внутри "https://yadi.sk/d/jGbwG3PGpt3am/LM0103C.jpg"
32 MAPATNK2
 
naïve
13.05.21
23:02
(30) Такое вот внутри      "Found. Redirecting to https://disk.yandex.ru/d/jGbwG3PGpt3am/LM0103C.jpg"
33 pechkin
 
13.05.21
23:03
Что значит показывает ссылку?
34 pechkin
 
13.05.21
23:04
(32) попробуй тоже самое уже с этой ссылкой
35 pechkin
 
13.05.21
23:04
У этой ссылки путь тот же только домен другой, полный
36 MAPATNK2
 
naïve
13.05.21
23:09
(35) ДА Вижу, теперь xml
37 timurhv
 
13.05.21
23:10
(32) В https://yadi.sk/d/jGbwG3PGpt3am/LM0103C.jpg = html страничка, а не картинка.
В html есть ссылка на картинку, но не на оригинальную.
Чтобы скачать оригинальную картинку необходимо использовать API Yandex.Cloud
https://yandex.ru/dev/disk/api/reference/public.html
38 MAPATNK2
 
naïve
13.05.21
23:15
(37) жесть. Тут неделю разбираться XD
39 MAPATNK2
 
naïve
13.05.21
23:16
(37) да оригинальная и не нужна. Только ссылку на копию там не могу найти
40 timurhv
 
13.05.21
23:27
41 timurhv
 
13.05.21
23:28
(40) Вот корректная ссылка, не там скопировал
https://cloud-api.yandex.net/v1/disk/public/resources/download?public_key=https://yadi.sk/d/jGbwG3PGpt3am&path=/LM0103C.jpg
42 timurhv
 
13.05.21
23:35
По ссылке в (40) кстати можете архив получить в zip, если укажете path=/
А потом скопом загружать в номенклатуру.
43 MAPATNK2
 
naïve
13.05.21
23:42
(42) Сделал так. Пишет - Файл не найден.

SSL = Новый ЗащищенноеСоединениеOpenSSL();
    Яндекс = новый HTTPСоединение("cloud-api.yandex.net",,,,,,SSL);
    //КаталогСохранения = ВыбратьКаталогСохранения();
    HTTPЗапрос = Новый HTTPЗапрос("/v1/disk/public/resources/download?public_key=https://yadi.sk/d/jGbwG3PGpt3am=/LM0103C.jpg");
    //HTTPЗапрос = Новый HTTPЗапрос("/v1/disk/public/resources/download?public_key=https://yadi.sk/d/7VkxupioQEjcNQ&path=/Test3.xlsx");

    Ответ = Яндекс.Получить(HTTPЗапрос);
    Если Ответ.КодСостояния = 200 тогда
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
        СсылкаНаСкачиваниеФайла = ПрочитатьJSON(ЧтениеJSON);
        Если ЗначениеЗаполнено(СсылкаНаСкачиваниеФайла.href) тогда
            КопироватьФайл(СсылкаНаСкачиваниеФайла.href,"D:\123456.jpg");
        КонецЕсли;
    ИначеЕсли Ответ.КодСостояния = 404 тогда
        Сообщить("Файл не найден");
    Иначе
        Сообщить("Что-то пошло не так, Код состояния = " + Ответ.КодСостояния);
    КонецЕсли;
44 MAPATNK2
 
naïve
13.05.21
23:45
(42) забыл &path.
Поставил. Скачалось 0 Кб.
45 MAPATNK2
 
naïve
13.05.21
23:50
(42) В итоге сделал так. Но все равно пустой файл качает. Где то уже читал в инете, что такая фигня постоянно с яндекс диском. Либо я что то не понял.

SSL = Новый ЗащищенноеСоединениеOpenSSL();
    Яндекс = новый HTTPСоединение("cloud-api.yandex.net",,,,,,SSL);    
    HTTPЗапрос = Новый HTTPЗапрос("/v1/disk/public/resources/download?public_key=https://yadi.sk/d/jGbwG3PGpt3am&path=/LM0103C.jpg");
    Ответ = Яндекс.Получить(HTTPЗапрос);
    Если Ответ.КодСостояния = 200 тогда
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
        СсылкаНаСкачиваниеФайла = ПрочитатьJSON(ЧтениеJSON);
        Если ЗначениеЗаполнено(СсылкаНаСкачиваниеФайла.href) тогда
            КопироватьФайл(СсылкаНаСкачиваниеФайла.href,"D:\123456.jpg");
        КонецЕсли;
    ИначеЕсли Ответ.КодСостояния = 404 тогда
        Сообщить("Файл не найден");
    Иначе
        Сообщить("Что-то пошло не так, Код состояния = " + Ответ.КодСостояния);
    КонецЕсли;
46 MAPATNK2
 
naïve
13.05.21
23:56
Победа. Для скачивания картинки с яндекс диска по публичной ссылке. Используйте пример кода:




SSL = Новый ЗащищенноеСоединениеOpenSSL();
    Яндекс = новый HTTPСоединение("cloud-api.yandex.net",,,,,,SSL);
    КаталогСохранения = "C:\ttt";
    HTTPЗапрос = Новый HTTPЗапрос("/v1/disk/public/resources/download?public_key=https://yadi.sk/d/jGbwG3PGpt3am&path=/LM0103C.jpg");
    Ответ = Яндекс.Получить(HTTPЗапрос);
    Если Ответ.КодСостояния = 200 тогда
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
        СсылкаНаСкачиваниеФайла = ПрочитатьJSON(ЧтениеJSON);
        Если ЗначениеЗаполнено(СсылкаНаСкачиваниеФайла.href) тогда
            //КопироватьФайл(СсылкаНаСкачиваниеФайла.href,КаталогСохранения+"\1.txt");
            Соединение = Новый HTTPСоединение(СтрЗаменить(СсылкаНаСкачиваниеФайла.href,"https://",""),,,,,,
            Новый ЗащищенноеСоединениеOpenSSL()
            );
            
            Запрос = Новый HTTPЗапрос("");
            Результат = Соединение.Получить(Запрос);
            Если Результат.КодСостояния = 302 Тогда
                
                КопироватьФайл(Результат.Заголовки.Получить("Location"),"D:\123456.jpg");
                
            КонецЕсли;
        КонецЕсли;
    ИначеЕсли Ответ.КодСостояния = 404 тогда
        Сообщить("Файл не найден");
        Возврат;
    Иначе
        Сообщить("Что-то пошло не так, Код состояния = " + Ответ.КодСостояния);
        Возврат;
    КонецЕсли;
47 timurhv
 
14.05.21
00:32
(46) Наверное, вместо редиректа с кодом 302 может и 200 вернуться. Тогда надо будет использовать
ДД = Результат.ПолучитьДвоичныеДанные();
ДД.Записать("D:\123456.jpg");
48 SiAl-chel
 
14.05.21
07:18
49 sikuda
 
14.05.21
09:56
(0) А теперь самое главное - Картинка имеет формат webp и в форме 1С не покажется ;)
Основная теорема систематики: Новые системы плодят новые проблемы.