Jak w TIdMultiPartFormDataStream podać strumień zamiast ścieżki?

0

Wysyłam plik jpg do serwisu przez TIdMultiPartFormDataStream, nazwę go M i
M.AddFile i tu domyślnie przyjmuje stringa ze ścieżką do pliku na dysku i działa to cudownie ale ja nie chcę zapisywać obrazka na dysku by go wrzucić do serwisu, chcę obrazek trzymać w pamięci na przykład TMemoryStream i podać ten strumień jako ścieżka. To niemożliwe jest?

0

Wszystko za pewne jest możliwe. Kwestia tylko zakodowania tego. Indy tutaj najlepiej ogarnia chyba tylko @kAzek - dlatego poczekajmy aż On się wypowie. Indy słabo znam i nie używam od dawna. Ale wnioskując po nazwie TIdMultiPartFormDataStream powinna być też jakaś metoda do dodawania streamów, a nie tylko i wyłącznie plików.

0

Nie wiem jaka wersja Indy w 10 na pewno się da metodą AddObject.

const
  UA =  'Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/20100101 Firefox/19.0';
  URL = 'http://localhost/upload/test.php';
var
  Data: TIdMultiPartFormDataStream;
  FS: TFileStream;
begin
  IdHTTP.Request.UserAgent:= UA;
  IdHTTP.HandleRedirects:= True;

  Data:= TIdMultiPartFormDataStream.Create;
  FS:= TFileStream.Create('D:\test.jpg', fmOpenRead); //moze byc memorystream
  Data.AddObject('file', 'image/jpeg', FS, 'nazwapliku.jpg');
  Memo1.Text:= IdHTTP.Post(URL, Data);
  FS.Free;
  Data.Free;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1