как отослать данные формы скрипту
, данные формы с ENCTYPE=multipart/form-data
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.217.37] |
|
|
Соблюдайте общие правила форума
MSDN Library
FAQ раздела
Поиск по разделу
Как правильно задавать вопросы
как отослать данные формы скрипту
, данные формы с ENCTYPE=multipart/form-data
|
Сообщ.
#1
,
|
|
|
|
подскажите, плз. мне нужно передать данные perl-скрипту методом пост, а именно: данные формы с ENCTYPE=multipart/form-data.
конкретней: надо передать файл для загрузки (на хтмл-странице это тэг <input type='file' name='file_to_load'>). пробовал юзать компонент TNMHTTP - не вышло, он по-моему ваще глючит с POST-запросами ![]() буду очень признателен за любой совет. пишу на D6 |
|
Сообщ.
#2
,
|
|
|
|
1.Сделай нужную тебе страницу со всеми тегами.
2.Создай форму, постав на неё Twebrowser 3. Form.Werbrowser.navigate('file.html'); |
|
Сообщ.
#3
,
|
|
|
|
сенкс, но таким макаром не получится. дело в том что поле <input type=file> невозможно заполнить средствами хтмл, указав, например, value='C:\Work\my_file.zip'. это запрещено из соображений безопасности, иначе каждый мудила, знающий хтмл мог бы п...ть инфу с файловой системы серфера.
я решил этот трабл, покопавшись в спецификации протокола хттп (кста, вот его перевод на русском - http://www.codenet.ru/webmast/rfc2068rus.php). для передачи инфы серверу юзаю компонент TTCPClient procedure TmainForm.sendFormButtonClick(Sender: TObject); var fileName, postData, firstReceived : String; stream : TFileStream; buf : Char; i : Integer; begin // tcpC - TTCPClient tcpC.Sendln('POST /cgi-bin/upload.cgi HTTP/1.1'); tcpC.Sendln('Content-Type: application/x-www-form-urlencoded; boundary=---------------------------7d4245307104b0'); tcpC.Sendln('Host: myhost.com'); postData := 'login=mylogin&password=mypassword&uploadedfile=FULL_PATH_TO_FILE'; tcpC.Sendln('Content-Length: '+ inttostr(length(postData))); tcpC.Sendln(''); tcpC.Sendln(postData); tcpC.Sendln(''); fileName := 'FULL_PATH_TO_FILE'; try stream := TFileStream.Create(fileName, fmOpenReadWrite); tcpC.SendStream(stream); for i := 0 to stream.Size - 1 do begin Stream.Seek(i,soFromBeginning); stream.Read(buf,1); tcpC.SendBuf(buf,1); end; finally stream.Free; end; tcpC.Sendln('---------------------------7d4245307104b0'); firstReceived := tcpC.Receiveln(); end; |