Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Загрузка файла на хостинг картинок

Загрузка файла на хостинг картинок
Я
   kdenis
 
16.03.21 - 16:51
Доброго дня!
Есть фото-хостинг с документированным API.

https://api.imgbb.com/

Пытаюсь загрузить туда картинку кодом:

Строка64 = Base64Строка(ДанныеФайла); // Двоичные данные
Строка64 = СтрЗаменить(Строка64, Символы.ПС, "");
Строка64 = СтрЗаменить(Строка64, Символы.ВК, "");

Запрос = Новый HTTPЗапрос();
Запрос.АдресРесурса = "/1/upload?key=ХХХХХХХХХХХХХХХХХХХХХХХХХХ&image=" + Строка64;

Соединение = Новый HTTPСоединение("api.imgbb.com", , , , , , Новый ЗащищенноеСоединениеOpenSSL);

Ответ = Соединение.ОтправитьДляОбработки(Запрос);


Получаю ответ:

{"status_code":400,"error":{"message":"Invalid base64 string.","code":120,"context":"Exception"},"status_txt":"Bad Request"}


В ДанныеФайла - файл png 50х50 пикселей. Если делаю файла 5х5 пикселей, запрос отрабатывает корректно.
Может есть у кого опыт работы с данным хостингом - поделитесь примером.

Результаты поисков натолкнули на мысль, что Base64Строка может некорректно кодировать файл.
Сравнивал результаты с онлайн кодерам/декодерами - результаты одинаковы.
   acht
 
1 - 16.03.21 - 17:23
Не стоит пытатся протаскивать картинку через урл запроса
   acht
 
2 - 16.03.21 - 17:24
Про это, кстати, человечьим языком написано по ссылке на твое апи.
   Kassern
 
3 - 16.03.21 - 17:30
(0) попробуй image=base64ТвояКартинка запихнуть в тело запроса и явно вызови метод POST.
   kdenis
 
4 - 16.03.21 - 21:47
(3) Пробовал и в тело. В итоге дошел до следующего:

Запрос = Новый HTTPЗапрос();
Запрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
//Запрос.Заголовки.Вставить("Content-Type", "image/png");

//Запрос.Заголовки.Вставить("Content-Type", "multipart/form-data");
//Запрос.Заголовки.Вставить("Content-Length", XMLСтрока(Файл.Размер()));


Запрос.АдресРесурса = "/1/upload?key=ХХХХХХХХХХХХХХХХХХХХХХХХХ";
Запрос.УстановитьТелоИзСтроки("&image=" + Строка64);
    
Соединение = Новый HTTPСоединение("api.imgbb.com", , , , , , Новый ЗащищенноеСоединениеOpenSSL);
    
Ответ = Соединение.ОтправитьДляОбработки(Запрос);


Если "Content-Type" указываю "application/x-www-form-urlencoded", Ответ.КодСостояния = 200, картинка уходит, но пустая. На хостинге новая картинка есть, но содержимого ее нет.

Если "Content-Type" указываю "image/png" или "multipart/form-data". Получаю ответ: {"status_code":400,"error":{"message":"Empty upload source.","code":130,"context":"Exception"},"status_txt":"Bad Request"}

Видимо, проблема в оформлении заголовка запроса.
Буду признателен за наводку.
   kdenis
 
5 - 17.03.21 - 12:43
Подниму тему.
   acht
 
6 - 17.03.21 - 12:55

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.