I need help in solving the problem of uploading a photo to wildberries.ru using IdHTTP. Post data looks like this when loading an image from the site:
------WebKitFormBoundaryCpJAFY6AlIHK7dZt
Content-Disposition: form-data; name="nmId"
13927988
------WebKitFormBoundaryCpJAFY6AlIHK7dZt
Content-Disposition: form-data; name="photos"; filename="13927988-2.jpg"
Content-Type: image/jpeg
{here these photos are most likely}
------WebKitFormBoundaryCpJAFY6AlIHK7dZt--
can't figure out how to transfer data via IdHTTP. I am using RAD Studio 10.3.1 Rio, Indy 10.
TIdHTTP
has an overloaded Post()
method that takes a TIdMultipartFormDataStream
as input, which in turn has AddFormField()
and AddFile()
methods. For example:
uses
..., IdHTTP, IdSSLOpenSSL, IdMultipartFormData;
var
HTTP: TIdHTTP;
SSL: TIdSSLIOHandlerSocketOpenSSL;
begin
HTTP := TIdHTTP.Create;
try
SSL := TIdSSLIOHandlerSocketOpenSSL.Create(HTTP);
SSL.SSLOptions.SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];
HTTP.IOHandler := SSL;
Data := TIdMultipartFormDataStream.Create;
try
with Data.AddFormField(‘nmId’, ‘13927988’) do
begin
ContentType := '';
ContentTransfer := '';
end;
with Data.AddFile(‘photos’, ‘full path to\13927988-2.jpg’, ‘image/jpeg’) do
ContentTransfer := '';
HTTP.Post(‘https://www.wildberries.ru/...’, Data);
finally
Data.Free;
end;
finally
HTTP.Free;
end;
end;