Witam serdecznie
Chciałbym się dowiedzieć w jaki sposób wysyłać obrazek na jakiś hosting obrazków, ale za pomocą winsock.
Nie mam doświadczenia z winsockiem. Przed chwilą bawiłem się w pobieranie obrazka z serwera i udało się, z tym, że niestety serwer przed danymi obrazka, wysyła mi jeszcze drobną odpowiedź, którą muszę wycinać i już jest w porządku, obrazek działa.
Teraz zastanawiam się jak wysyłać dane. Hostingi do uploadu obrazków każdy na pewno zna (cała masa imageshacków i innych).
Do tej pory wysyłałem obrazek przez idHttp i TIdMultiPartFormDataStream, np:
DataStream:= TIdMultiPartFormDataStream.Create;
{Wypelnienie pol danymi}
DataStream.AddFormField('cos tam', '1');
DataStream.AddFile('nazwa', sciezka, 'multipart/form-data');
//i tak dalej
//no wysłanie, odbiór
Memo.Text:= IdHTTP.Post(url, DataStream);
mniej więcej tak wygląda kod do wysyłania, jest prosty, fajny, bo używa się komponentu
Teraz prosiłbym was o jakieś porady, jak wysłać to za pomocą WinSock
Dla przypomnienia, wysyłanie:
send(tu socket jako int, zapytanie do serwera[1] jako AnsiString, Length(zapytanie), 0);
Do pobierania i zapisu obrazku użyłem BlockWrite, bo jest fajny i porcjami zapisywałem dane w pliku.
Czy jak będę chciał wysłać obrazek na jakiś hosting to czy mogę czytać dane pliku w pętli za pomocą BlockRead, wrzucać do jakiejś tablicy (bufor) i wysyłać porcjami do serwera (send())? Czy inaczej to trzeba?
A i co ważniejsze, jak wysłać dane z informacjami o pliku przed wysłaniem obrazka? Jakiś strumień utworzyć, czy co? Jak konstrukcja tego zapytania ma wyglądać? Ogólnie, jak to wszystko mniej więcej wysyłać?
Może załóżmy, że pola formularza na stronie to:
enctype: multipart/form-data
pole pliku o nazwie np: "plik1"
pole z regulaminem o nazwie: "regulamin" i wartości "agree"
Z góry dzięki za porady :)
odświeżam