如何在服务器端使用Perl CGI脚本处理C#httpWebRequest流上传的文件?

如何在服务器端使用Perl CGI脚本处理C#httpWebRequest流上传的文件?,c#,perl,apache,cgi,C#,Perl,Apache,Cgi,我正在尝试编写一个Perl CGI脚本,将客户机上传的文件保存到服务器上的文件中。在客户端,C#代码使用httpWebRequest并通过流发送数据 上传的数据似乎没有与之相关的参数,因此我很难读取它(我不知道C#)。在Stackoverflow进行搜索后,我使用 $query = CGI->new(); $data = $query->param('POSTDATA'); 我现在可以直接将这些数据写入文件 open ( FH, ">$filename" ) or die (

我正在尝试编写一个Perl CGI脚本,将客户机上传的文件保存到服务器上的文件中。在客户端,C#代码使用httpWebRequest并通过流发送数据

上传的数据似乎没有与之相关的参数,因此我很难读取它(我不知道C#)。在Stackoverflow进行搜索后,我使用

$query = CGI->new();
$data = $query->param('POSTDATA');
我现在可以直接将这些数据写入文件

open ( FH, ">$filename" ) or die ("error opening file $filename: $!");
print FH $data;
close FH;
这适用于小文件。但是,当POSTDATA包含大小超过500MB的大数据时,Perl CGI脚本将等待所有文件下载完毕,然后将其写入文件。似乎POSTDATA包含了整个文件。这会对系统内存造成压力。是否有其他方法读取httpWebrequest流数据并将其写入文件

该模块不可用。此外,我还不知道有任何Perl CGI实现可以为POST数据提供流句柄

考虑切换到PSGI。提供了一个可从中读取的文件句柄


示例应用程序(未测试):


lwp请求-m POST-c text/plain-USehttp://localhost:5000 
此模块不可用。此外,我还不知道有任何Perl CGI实现可以为POST数据提供流句柄

考虑切换到PSGI。提供了一个可从中读取的文件句柄


示例应用程序(未测试):


lwp请求-m POST-c text/plain-USehttp://localhost:5000 
谢谢你的回复。我会尽快尝试。谢谢你的回复。我会尽快尝试。
plackup -MIO::File::WithPath -MPlack::Request -MSys::Sendfile=sendfile -e '
    my $app = sub {
        my ($env) = @_;
        my $out = IO::File::WithPath->new("/tmp/out", "w") or die $!;
        my $req = Plack::Request->new($env);
        my $r = sendfile($out, $req->body) or die $!;
        return [200, [], []]
    }
'
lwp-request -m POST -c text/plain -USe http://localhost:5000 < /usr/src/linux/COPYING