Отправка и сохранение файла на сервере с помощью CGI
				
Добавлено: 
31.10.2008 15:09:21 Serafim
				Добрый день.
 У меня такой вопрос: Кто-нибудь знает как можно сохранить файл, отправленный с помощью формы, на сервере, используя CGI программу, написанную на Pascal?
 Код формы примерно такой:
'<form action=brrr.exe method=post enctype="multipart/form-data">
  <input type=file name=brrr>
</form>'
			 
			
				Re: Отправка и сохранение файла на сервере с помощью CGI
				
Добавлено: 
31.10.2008 22:35:08 Odyssey
				О том, как можно это сделать с помощью powtils, написано тут:
http://z505.com/cgi-bin/powtils/docs/1. ... adfiletipsСам не пробовал. В этом примере сильно смущает жестко заданный путь для закачанных файлов, но других вариантов я не знаю.
 
			
				Re: Отправка и сохранение файла на сервере с помощью CGI
				
Добавлено: 
01.11.2008 12:17:17 shade
				Можно через 
CURL, читай доку, в частности по функции 
curl_easy_setopt 
			
				Re: Отправка и сохранение файла на сервере с помощью CGI
				
Добавлено: 
02.11.2008 15:09:39 v-t-l
				Точно не помню, но по-моему при методе POST данные формы помещаются сервером в переменные окружения перед вызовом CGI-приложения. Функции GetEnvironmentString, GetEnvironmentVariable и GetEnvironmentVariableCount должны помочь.
			 
			
				Re: Отправка и сохранение файла на сервере с помощью CGI
				
Добавлено: 
02.11.2008 20:03:35 Sawer
				вот рабочий код из проекта:
- Код: Выделить всё
- program update;
 {$mode delphi}{$H+}
 
 uses unix, pwinit, pwmain, compactsysutils, pwenvvar;
 
 const FUPL = 'fupl';
 
 procedure ShowForm;
 begin
 Outln('<b>Обновление программы</b>');
 Outln('<form method=post action="" enctype="multipart/form-data">');
 Outln('<input name="'+FUPL+'" type=file size=20>');
 Outln('<input type=submit value="Обновить">');
 Outln('</form>');
 end;
 
 procedure ProcessUpfile;
 var AbsoluteFname: string;
 begin
 AbsoluteFname := '/home/file';
 Out('Обновление...');
 SaveUpFile(FUPL, AbsoluteFname);
 if SaveUpFile(FUPL, AbsoluteFname) then
 begin
 Out('Обновление проведено успешно!');
 end
 else Out('Ошибка при обновлении!');
 end;
 
 begin
 if IsUpFile(FUPL) then ProcessUpFile else ShowForm;
 end.
обращаю внимание на обязательный режим {$mode delphi}, иначе НЕ РАБОТАЕТ!!!
 
			
				Re: Отправка и сохранение файла на сервере с помощью CGI
				
Добавлено: 
03.11.2008 11:14:32 shade
				v-t-l писал(а):Точно не помню, но по-моему при методе POST данные формы помещаются сервером в переменные окружения перед вызовом CGI-приложения.
Нет, данные POST в CGI читаются из стандартного ввода.