Добрый день.
У меня такой вопрос: Кто-нибудь знает как можно сохранить файл, отправленный с помощью формы, на сервере, используя CGI программу, написанную на Pascal?
Код формы примерно такой:
'<form action=brrr.exe method=post enctype="multipart/form-data">
<input type=file name=brrr>
</form>'
Отправка и сохранение файла на сервере с помощью CGI
Модератор: Модераторы
О том, как можно это сделать с помощью powtils, написано тут:
http://z505.com/cgi-bin/powtils/docs/1. ... adfiletips
Сам не пробовал. В этом примере сильно смущает жестко заданный путь для закачанных файлов, но других вариантов я не знаю.
http://z505.com/cgi-bin/powtils/docs/1. ... adfiletips
Сам не пробовал. В этом примере сильно смущает жестко заданный путь для закачанных файлов, но других вариантов я не знаю.
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Можно через CURL, читай доку, в частности по функции curl_easy_setopt
Точно не помню, но по-моему при методе POST данные формы помещаются сервером в переменные окружения перед вызовом CGI-приложения. Функции GetEnvironmentString, GetEnvironmentVariable и GetEnvironmentVariableCount должны помочь.
вот рабочий код из проекта:
обращаю внимание на обязательный режим {$mode delphi}, иначе НЕ РАБОТАЕТ!!!
Код: Выделить всё
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}, иначе НЕ РАБОТАЕТ!!!
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
v-t-l писал(а):Точно не помню, но по-моему при методе POST данные формы помещаются сервером в переменные окружения перед вызовом CGI-приложения.
Нет, данные POST в CGI читаются из стандартного ввода.
