-3
我使用下面的代码来通过perl cgi来处理上传文件。我尝试fileparse,但给路径错误。我在这里做错了什么?fileparse error while exec cgi script-perl cgi
exec通过以下错误失败。
fileparse(): need a valid pathname at ./testupload.cgi line 15
任何输入?
来源:
use strict use CGI;
use CGI::Carp qw (fatalsToBrowser);
use File::Basename;
$CGI::POST_MAX = 1024 * 5000;
my $safe_filename_characters = "a-zA-Z0-9_.-";
my $upload_dir = "/home/test/Desktop/uploads";
my $query = new CGI;
my $filename = $query->param("textfile");
my ($name, $path, $extension) = fileparse($filename, '\..*');
$filename = $name.$extension; $filename =~ tr/ /_/;
$filename =~ s/[^$safe_filename_characters]//g;
if ($filename =~ /^([$safe_filename_characters]+)$/)
{ $filename = $1; }
else
{ die "Filename contains invalid characters"; }
想必你会弄错路径。可能对当前工作目录做出错误的假设。可能没有权限访问正确的目录。 – Quentin 2014-12-09 12:10:53
我的代码: 使用严格的 使用CGI; 使用CGI ::鲤鱼qw(fatalsToBrowser); 使用File :: Basename; $ CGI :: POST_MAX = 1024 * 5000; my $ safe_filename_characters =“a-zA-Z0-9 _.-”; my $ upload_dir =“/ home/test/Desktop/uploads”; my $ query = new CGI; my $ filename = $ query-> param(“textfile”); my($ name,$ path,$ extension)= fileparse($ filename,'\ .. *'); $ filename = $ name。$ extension; $ filename =〜tr// _ /; $ filename =〜s/[^ $ safe_filename_characters] // g; – 2014-12-09 12:11:59
if($ filename =〜/ ^([$ safe_filename_characters] +)$ /)$ filename = $ 1; } else { die“Filename contains invalid characters”; } – 2014-12-09 12:12:22