Sample code for 30+ languages & platforms
Delphi DLL

Set a Multipart Part Body from BinData

See more REST Examples

Demonstrates Rest.SetMultipartBodyBd, which sets the binary body of the selected multipart part from a BinData.

The file paths are relative to the application's current working directory. Absolute paths may also be used. Supply the paths appropriate to your own environment.

Background. A multipart request is assembled part by part: the part selector chooses the part being built, header fields describe it, and a SetMultipartBody method supplies its content. The request is then sent with a multipart send or full-request method.

Chilkat Delphi DLL Downloads

Delphi DLL
var
success: Boolean;
rest: HCkRest;
bTls: Boolean;
bAutoReconnect: Boolean;
bdBody: HCkBinData;
bLoaded: Boolean;
responseText: PWideChar;

begin
success := False;

rest := CkRest_Create();
bTls := True;
bAutoReconnect := True;
success := CkRest_Connect(rest,'example.com',443,bTls,bAutoReconnect);
if (success = False) then
  begin
    Memo1.Lines.Add(CkRest__lastErrorText(rest));
    Exit;
  end;
//  The file paths are relative to the application's current working directory.  Absolute paths
//  may also be used.  Supply the paths appropriate to your own environment.

//  Select the multipart part to build, and set its header fields.
CkRest_putPartSelector(rest,'1');
CkRest_AddHeader(rest,'Content-Disposition','form-data; name="field1"');
CkRest_AddHeader(rest,'Content-Type','image/png');

//  Set the binary body of the selected part from a BinData.
bdBody := CkBinData_Create();
bLoaded := CkBinData_LoadFile(bdBody,'qa_data/image.png');
if (bLoaded <> True) then
  begin
    Memo1.Lines.Add('Failed to load the part body file.');
    Exit;
  end;
success := CkRest_SetMultipartBodyBd(rest,bdBody);
if (success = False) then
  begin
    Memo1.Lines.Add(CkRest__lastErrorText(rest));
    Exit;
  end;

responseText := CkRest__fullRequestMultipart(rest,'POST','/api/upload');
if (CkRest_getLastMethodSuccess(rest) = False) then
  begin
    Memo1.Lines.Add(CkRest__lastErrorText(rest));
    Exit;
  end;
Memo1.Lines.Add(responseText);

CkRest_Dispose(rest);
CkBinData_Dispose(bdBody);