Отправка картиники с запросом

Александр210

Принятый Кодер
Ofline
Доброго времени суток коллеги нужна ваша помощь

Есть процедура для авторизации на сайте она работает но встала задача что при регистрации нужно
передать еще фото или картинку из timage:

Так вот как сюда добавить еще фото:
data := 'phone='+reg_login_user+'&password='+reg_pass_user+'&name='+reg_name_user;

Есть предположение что надо дописать в конец еще скажем +'&photo='+а как его скажем загнать сюда из Timage;<--?

ниже представлены данные из докера разработчики сайта сделали его для удобства отстройки по Api

curl -X POST "http://api.service.ru/v1/user/auth" -H "accept: application/json" -H "Content-Type: multipart/form-data" -H "X-CLIENT-ID: docs_test_client_dont_use_in_prod" -H "X-API-KEY: 58574921a5b3e6ab3337a9e78b2b808d" -H "User-Agent: Android/2.0.9 (iPhone 8; iOS 10.1.2)" -d {"phone":"78949878543","password":"parol","name":"Ivan","photo":{}}

Как видно добавились параметры для добавления фото но вот как сюда его запихнуть ума не прилажу всю голову сломал
фото или картинку надо взять из timage





procedure reg_user; // Регистрация и получение ключей
var
data: string;
DataToSend : TStringStream;
IdHTTP: TIdHTTP;
Answer: string;
var x:ISuperObject;


begin

dateutcminus;
md5hash:='docs_test_client_dont_use_in_prod'+'renderTime'+IntToStr(YearOf(Now))+'-'+mount_utc+'-'+date_utc+':'+hore_utc;
md5hash:=System.Hash.THashMD5.GetHashString(md5hash); // Преобразовали в переменной md 5

try
data := 'phone='+reg_login_user+'&password='+reg_pass_user+'&name='+reg_name_user; // Записали в строку данные
DataToSend := TStringStream.Create(data, TEncoding.UTF8);
try
IdHTTP := TIdHTTP.Create(nil);
try
IdHTTP.Request.Accept := 'application/json, text/plain;q=0.9, text/html;q=0.8';
IdHTTP.Request.ContentType :='multipart/form-data';
IdHTTP.Request.CustomHeaders.Values['X-CLIENT-ID'] := 'docs_test_client_dont_use_in_prod';
IdHTTP.Request.CustomHeaders.Values['X-API-KEY'] := md5hash;
IdHTTP.Request.UserAgent := 'Android/2.0.9 (iPhone 8; iOS 10.1.2)';
Answer := IdHTTP.Post('http://api.service.ru/v1/user/auth', DataToSend); // Записываем ответ в answer
Application.ProcessMessages;


x:=SO(Answer);
tokenkey:=( X['token'].AsString ); // Получили токен
refreshtokenkey:=( X['refresh_token'].AsString ); // Получили рефрешь токен

IniFile:=TIniFIle.Create(TPath.Combine(TPath.GetTempPath, 'securiti'+'.ini')); // Создаем файл
IniFile.Writestring('paremeters', 'tokenkey', tokenkey); // Записываем
Inifile.UpdateFile;

IniFile:=TIniFIle.Create(TPath.Combine(TPath.GetTempPath, 'securiti'+'.ini')); // Создаем файл
IniFile.Writestring('paremeters', 'refreshtokenkey', refreshtokenkey); // Записываем
Inifile.UpdateFile; // Обновляем файлик с данными на устройстве

TabbedForm.WORKFORM.Visible := true; // Если же не пустые то показываем основную форму
TabbedForm.REGAUTCHFORM.Visible :=false; // При успешной авторизации скрываем форму авторизации
TabbedForm.memo1.Lines.Add('Успешная регистрация');

finally
IdHTTP.Free;
end;

finally
DataToSend.Free; // Очищаем
end;

except
on E: Exception do
if E.Message.Contains('HTTP/1.1 400 Bad Request') then
begin
ShowMessage('Введины не верные данные при регистрации');
end;
end;
 
Тему перенесу, так как не в том разделе вопрос задал. А так фото передавай через stream.
 
Назад
Сверху Снизу