2011-11-05 2 views
0

내 웹 사용자가 사진을 업로드하는 데 사용할 수있는 코드를 인터넷에서 검색했습니다. 오픈 소스 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 구글 경우

+0

을 통해 액세스 할 수있는 CGI 개체에서 파일을 읽지 않습니다. 검색 검색 검색 http://stackoverflow.com/questions/7770176/perl-script-for-file-upload – searcher

답변