function HttpPostFile(const URL, FieldName, FileName: string; const Data: PStream; const ResultData: PStrList): Boolean; var HTTP: THTTPSend; Bound, s: string; begin Bound := Int2Hex(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; HTTP.Document.WriteStr(s); //HTTP.Document.CopyFrom(Data, 0); Stream2Stream(HTTP.Document, Data, Data.Size); s := CRLF + '--' + Bound + '--' + CRLF; HTTP.Document.WriteStr(s); HTTP.MimeType := 'multipart/form-data; boundary=' + Bound; Result := HTTP.HTTPMethod('POST', URL); if Result then ResultData.LoadFromStream(HTTP.Document, False); finally HTTP.Free; end; end; |