Имя: Пароль:
1C
1С v8
Загрузка файла на хостинг картинок
0 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Строка может некорректно кодировать файл.
Сравнивал результаты с онлайн кодерам/декодерами - результаты одинаковы.
1 acht
 
16.03.21
17:23
Не стоит пытатся протаскивать картинку через урл запроса
2 acht
 
16.03.21
17:24
Про это, кстати, человечьим языком написано по ссылке на твое апи.
3 Kassern
 
16.03.21
17:30
(0) попробуй image=base64ТвояКартинка запихнуть в тело запроса и явно вызови метод POST.
4 kdenis
 
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"}

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