我已经在互联网上搜索了可用于允许我网站用户上传照片的代码。我尝试了许多开源Perl代码,结果相同:上传到我服务器的新文件是空白的!
以下是代码:
首先,要求提供文件的网页:
<form name="input" action="/cgi-bin/upload.pl" method="get" ENCTYPE="multipart/form-data">
Upload Photo:<input type="file" name="pic" /><BR>
<input type="submit" name="Submit" value="Submit Form" />
现在上传代码:
#!/usr/bin/perl
use CGI;
my $cgi = new CGI;
my $dir = "/home/mydomain/www/wwwboard/uploads";
my $file = $cgi->param('pic');
my $filename = $file;
$filename =~ s/^.*\\//;
$filename =~ s/^.*\///;
$filename =~ s/\s /_/g;
open(LOCAL, ">", "$dir/$filename") or die $!;
while(<$file>) {
binmode LOCAL;
print LOCAL $_;
}
close(LOCAL);
print "Content-type: text/html\n\n";
print "$file has been successfully uploaded... thank you.\n";
我不是Perl专家,但在我看来问题是变量$ file = $ cgi-&gt; param('pic');只是从用户的计算机中获取文件句柄的基本名称。例如,当我尝试上传名为“/home/nick/Pictures/photo.JPG”的文件时,我从服务器收到的消息显示“photo.JPG已成功上传...谢谢。”。也许这不是问题,我不知道......
我使用firefox和chrome获得相同的结果。 uploads文件夹的权限是777。
我知道这段代码的安全性很弱。我可以稍后再说。现在我只想看到它的工作。
答案 0 :(得分:2)
如果你谷歌perl cgi file upload
第一个链接是指向完全如何执行此操作的教程:http://www.sitepoint.com/uploading-files-cgi-perl/
get
而不是post
$cgi->upload('pic')