Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Upload файлов на сервер посредством CGI [D6, WinXP]


Алексей_К ©   (2005-05-24 06:56:00) 

Необходимо передать файл на сервер, принимает файл CGI-скрипт.

Попробывал следующее решение: В TWebRequest есть свойство Files,  когда обращаюсь к этому свойству, возникают ошибки типа "Access violation at address ...".
В хелпе написано "The TAbstractRequestFiles object contains uploaded files extracted from the HTTP request.", но как этим правильно пользоваться?

Код:
...
 const
   c=' http://127.0.0.1/cgi-bin/up.exe';
...
procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var page:TSTringlist;
   f:TFileStream;    
begin
page:=TSTringlist.Create;
page.Add('<html>');
if Request.MethodType=mtGET then
       begin
       page.Add('<head><title>Form upload.</title></head><body>');
       page.Add('<form action="'+c+'" method="POST">');
       page.Add('<input type="file" name="fn" value="files">');
       page.Add('<input type="submit" name="go" value="upload...">');
       page.Add('</form>');
       end;
if request.MethodType=mtPOST then
       begin
       f:=TFileStream.Create('file',fmCreate);
       f.CopyFrom(Request.Files.Items[0].Stream,Request.Files.Items[0].Stream.Size);
       f.Free;
       page.Add('<head><title>Form 2.</title></head><body>');
       page.Add('Files count: '+inttostr(Request.Files.Count));
       page.Add('
<a href="'+c+'">back</a>');
       page.Add('
Content:
<hr>'+request.Content+'<hr>');
       end;
page.Add('</body></html>');
Response.Content:=page.Text;
page.Free;
end;

Подскажите плиз, что делать...


Алексей_К   (2005-05-26 06:08:00) [1]

Оказываеться для передачи файлов необходимо в теге <Form> указать следующее:

<form method="POST" action="..." ENCTYPE="multipart/form-data">

Файл отправляеться, есть одно "но". Файлы имеющие размер более 73536 байт усекаются, т.е. 1 меговый файл весь не скачаеться на сервер, а только первые его 73536 байта.

Может у кого-нибудь есть инфа по этой части?


Наверх

Титульная страница Поиск, карта сайта Написать письмо