jak wysyłać pliki do formularza za pomocą WinSock?

0

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

0

Biblioteka indy ma bardzo dużo przykładów "firmowych", w tym jest wysyłanie pliku, wystarczy ściągnąć.

0
_13th_Dragon napisał(a)

Biblioteka indy ma bardzo dużo przykładów "firmowych", w tym jest wysyłanie pliku, wystarczy ściągnąć.

indy? Tzn. sugerujesz zrobić to na komponentach indy, czyli idHTTP itd? Jak tak to tego nie chcę, bo to potrafię, chcę teraz na winsock tylko. No chyba, że nie zrozumiałem ciebie i są też przykłady na winsock, choć po samym indy spodziewam się tylko dem pod komponenty różne i tyle.

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