Почему этот скрипт Perl CGI не может правильно загрузить изображения? - PullRequest
1 голос
/ 16 февраля 2010

У меня есть этот код:

use CGI;    
use File::Basename;    
use Image::Magick;    
use Time::HiRes qw(gettimeofday);    
my $query = new CGI;    
my $upload_dir = "../images"; #location on our server    
my $filename=$query->param("img");    
my $timestamp = int (gettimeofday * 1000);    
my ( $name, $path, $extension ) = fileparse ( $filename, '\..*' );     
$filename = $name ."_".$timestamp. $extension;    

 #upload the image

my $upload_filehandle =$query->param("img");    
open ( UPLOADFILE, ">$upload_dir/$filename" ) or die "$!";  
 binmode UPLOADFILE;  
 while ( <$upload_filehandle> )  
  {  
   print UPLOADFILE;  
   }  

  close UPLOADFILE;

Затем я изменяю размер изображения. Моя проблема в том, что изображение не загружено. У меня есть пустой файл с именем $ filename. Я пропустил часть, связанную с изменением размера, и у меня все еще есть код. Поэтому я уверен, что файл загружается неправильно. Я скучаю по какой-либо библиотеке? Любая помощь? Плз ..

Ответы [ 3 ]

3 голосов
/ 16 февраля 2010

Вам нужно изменить

my $upload_filehandle =$query->param("img");

до

my $upload_filehandle =$query->upload("img");

в соответствии с этого урока .

Надеюсь, это поможет.

2 голосов
/ 16 февраля 2010

Я понял, почему: Как указано в CGI.pm документах , тип кодировки формы должен быть multipart/form-data. Когда я добавил это, все заработало.

0 голосов
/ 27 февраля 2010

добавил это "ENCTYPE = 'multipart / form-data'" вместо кодировки.

> <form action="/post.pl" method="post"  ENCTYPE='multipart/form-data'>

и все заработало

...