내 웹 사용자가 사진을 업로드하는 데 사용할 수있는 코드를 인터넷에서 검색했습니다. 오픈 소스 Perl 코드를 여러 번 사용해 보았습니다. 동일한 결과가 나타납니다. 내 서버에 업로드 된 새 파일이 비어 있습니다! 여기 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";
나는 펄 전문가가 아니에요을 ,하지만 그것은 나에게 문제는 변수 $ file = $ cgi-> param ('pic'); 사용자의 컴퓨터에서 파일 핸들의 기본 이름 만 선택합니다. 예를 들어 "/home/nick/Pictures/photo.JPG"라는 파일을 업로드하려고하면 서버에서받는 메시지에 "photo.JPG가 성공적으로 업로드되었습니다 ... 감사합니다."라고 표시됩니다. 어쩌면 그게 문제가 아니야. 모르겠다. ...
파이어 폭스와 크롬을 사용하면 같은 결과를 얻는다. 업로드 폴더에 대한 권한은 777입니다.
이 코드의 보안이 약함을 알고 있습니다. 나는 나중에 그것을 얻을 수있다. 지금은 그저 작동하는지보고 싶습니다. 당신이 perl cgi file upload
구글 경우
을 통해 액세스 할 수있는 CGI 개체에서 파일을 읽지 않습니다. 검색 검색 검색 http://stackoverflow.com/questions/7770176/perl-script-for-file-upload – searcher