2014-11-21 72 views
1

为什么上传到FTP服务器时总是收到损坏的图片文件? .gif图像没有被损坏,只有.jpeg/jpg.png被损坏。Via Perl Net :: FTP上传的图片遭到损坏

sub png{ 
    my $ftp=Net::FTP->new($fhost)or die &ftpErr; 
    $ftp->login($hostname, $hostpass); 
    my $img=$ftp->put("$file"); 
    $ftp->get($img); 
    $ftp->quit; 
    our $image="$img"; 
    our $shot=$window->Photo(-format=>'png',-file=>"$image"); 
    $window->Label(-relief=>'ridge',-image=>$shot,-width=>50,-height=>50)->pack(-anchor=>'n'); 
} 
sub jpeg{ 
    my $ftp=Net::FTP->new($fhost)or die &ftpErr; 
    $ftp->login($hostname, $hostpass); 
    my $img=$ftp->put("$file"); 
    $ftp->get($img); 
    $ftp->quit; 
    our $image="$img"; 
    our $shot=$window->Photo(-format=>'jpeg',-file=>"$image"); 
    $window->Label(-relief=>'ridge',-image=>$shot,-width=>50,-height=>50)->pack(-anchor=>'n'); 
} 

回答

2

您正在以默认模式(ASCII)传输文件。该模式转换线路结束。要传输二进制文件使用二进制模式:

$ftp->binary; 
    $ftp->put(...); 
    $ftp->get(...); 
+0

确保'$ FTP-> binary'是登录后 – CJ7 2018-02-05 01:00:43

+0

@ CJ7:二进制模式应上传/下载之前设置。实际上,每次上传/下载都可以设置不同的设置。 – 2018-02-05 05:36:19

+0

但它需要在用户名和密码步之后。 – CJ7 2018-02-05 21:56:00