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
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;