Apache2 - обработка HTTP PUT - PullRequest
1 голос
/ 23 июня 2011

У меня работает сервер apache2, очень хорошо работающий со сложной структурой каталогов. В конце большинства каталогов у меня есть файл perl ('index.pl'), который обрабатывает все команды GET & POST (мне нужно что-то динамическое).

Теперь я хочу, чтобы index.pl также обрабатывал команды «PUT», однако всякий раз, когда я пытаюсь отправить команду «PUT», я получаю 405. Если я включаю DAV, команда PUT не выполняет сценарий perl, а скорее просто помещает файл в каталог.

Теперь я знаю, что это не обычное использование команды PUT - дело в том, что я пишу сервер резервного копирования для очень сложного веб-сервиса, который обрабатывает команды PUT (и поэтому мне тоже нужно).

Спасибо!

1 Ответ

0 голосов
/ 27 июня 2011

в вашем файле index.pl вам нужно сделать:

$method = $ENV{'REQUEST_METHOD};
$data = '';
$buffer = '';
if ( $method eq 'PUT' ) {
  sysread(STDIN, $data, $length);
  while( length($data) < $length ) {
      last unless sysread(STDIN, $buffer, 4096);
      $data .= $buffer;
  }
  # You now have your PUT data in the $data variable.
}
...