ich versuche verzweifelt mit Synapse eine Datei über HTTP/Post zu versenden, überall findet man die entsprechende Funktion. Aber nirgendwo gibt es ein entsprechendes Beispiel wie man die Funktion aufruft.
Ich muss unter Angabe eines Dateinamens eine Datei senden, ich verstehe aber leider nicht wie ich const Data: TStream; const ResultData: TStrings): verwenden soll, hat da jemand eine Idee?
Danke
Code: Alles auswählen
function HttpPostFile(const URL, FieldName, FileName: string;
const Data: TStream; const ResultData: TStrings): Boolean;
var
HTTP: THTTPSend;
Bound, s: string;
begin
Bound := IntToHex(Random(MaxInt), 8) + '_Synapse_boundary';
HTTP := THTTPSend.Create;
try
s := '--' + Bound + CRLF;
s := s + 'content-disposition: form-data; name="' + FieldName + '";';
s := s + ' filename="' + FileName +'"' + CRLF;
s := s + 'Content-Type: Application/octet-string' + CRLF + CRLF;
WriteStrToStream(HTTP.Document, s);
HTTP.Document.CopyFrom(Data, 0);
s := CRLF + '--' + Bound + '--' + CRLF;
WriteStrToStream(HTTP.Document, s);
HTTP.MimeType := 'multipart/form-data; boundary=' + Bound;
Result := HTTP.HTTPMethod('POST', URL);
if Result then
ResultData.LoadFromStream(HTTP.Document);
finally
HTTP.Free;
end;
end;