Apache2-处理HTTP PUT

Apache2-处理HTTP PUT,apache,xmlhttprequest,mod-perl,Apache,Xmlhttprequest,Mod Perl,我有一个运行apache2的服务器,可以很好地使用复杂的目录结构。在大多数目录的末尾,我有一个perl文件('index.pl'),它处理所有GET&POST命令(我需要一些动态的东西) 现在,我希望index.pl也能处理“PUT”命令,但是每当我尝试发送一个“PUT”命令时,就会得到405。如果启用DAV,PUT命令不会执行perl脚本,而是将文件放在目录中 现在,我知道这不是PUT命令的常用用法——问题是我正在为一个非常复杂的Web服务编写一个备份服务器,它处理PUT命令(因此,我也需要这

我有一个运行apache2的服务器,可以很好地使用复杂的目录结构。在大多数目录的末尾,我有一个perl文件('index.pl'),它处理所有GET&POST命令(我需要一些动态的东西)

现在,我希望index.pl也能处理“PUT”命令,但是每当我尝试发送一个“PUT”命令时,就会得到405。如果启用DAV,PUT命令不会执行perl脚本,而是将文件放在目录中

现在,我知道这不是PUT命令的常用用法——问题是我正在为一个非常复杂的Web服务编写一个备份服务器,它处理PUT命令(因此,我也需要这样做)


谢谢

在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.
}
$method=$ENV{'REQUEST\u method};
$data='';
$buffer='';
如果($方法等式'PUT'){
sysread(STDIN,$data,$length);
while(长度($data)<$length){
最后一个系统读取(STDIN,$buffer,4096);
$data.=$buffer;
}
#现在将数据放入$data变量中。
}