2012-04-09 52 views
0

我需要安装一个下载HTTP服务器,我不想安装Apache。我可以使用HTTP :: Server :: Simple作为下载http服务器吗?

我可以使用HTTP::Server::Simple作为下载http服务器?你能给我一些示例代码吗?

或者是有其他的CPAN模块可以快速,轻松地帮助我建立一个下载HTTP服务器?

sub download { 
my $cgi = shift; # CGI.pm object 
return if !ref $cgi; 

my $file = $cgi->param('file'); #file=test.tar.gz 
$file="/var/download/$file"; #file=/var/download/test.tar.gz 

# send this file 
} 
+3

为什么你不希望安装Apache(或nginx的或其他)?在您称之为“下载http服务器”时,如果考虑到身份验证,授权,文件系统相关的错误,Webroot,目录遍历,Unicode映射等,则这是一个非常复杂的命题。我只能真正推荐在极端情况下自己实施一个。 – 2012-04-09 07:04:10

+1

此外,你不会想要,因为它不会线程/ fork,所以无法为并发请求提供服务。 – 2012-04-09 07:06:22

+0

这仅仅是一个朋友的临时使用。我不在乎认证等等... – everbox 2012-04-09 07:08:53

回答

-1

正如评论指出,这是非同小可的问题。但是,如果我需要一个快速和简单的服务器来提供文件,我平时做

python -m SimpleHTTPServer 

在我想要服务的目录中。它启动一个网络服务器0.0.0.0:8000,您可以将浏览器指向那里下载文件。

我不知道类似的一条线解决方案存在perl的,但我想它不会得到任何比这更简单。

+0

好的,如果downvoter会好心发表评论请。我希望这不是narromindedness,因为我用python行回答了一个'perl'标记的问题? – 2012-04-09 08:11:55

+0

太好了。正是我想要的! – everbox 2012-04-09 08:19:44

4

同为木根村健一与普拉克回答:

plackup -MPlack::App::Directory -e'Plack::App::Directory->new({ root => "." })->to_app' 

这已照顾的东西大卫 - SkyMesh上评价说,这是很容易在命令行中Authn/AuthZ的混合。通过添加-s Starman,可以切换适用于面向Internet的健壮的预分叉服务器。

+0

我喜欢它。唯一的缺点:你必须先安装模块。 – 2012-04-09 17:08:43

2

您还可以使用App::HTTPThis。安装后:

http_this dir_name 

可能没有那么容易。事实上,如果您已经在要导出的目录中,则可以跳过dir_name参数。

相关问题