1


0

このPerl CGIスクリプトが画像を正しくアップロードできないのはなぜですか?

私はこのコードを持っています:

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という名前の空のファイルがあります。 サイズ変更に関連する部分は省略しましたが、コードはまだあります。 そのため、ファイルが正しくアップロードされていないことを確信しています。 ライブラリがありませんか? 助けてください?Plz ..

3 Answer


3


変更する必要があります

my $ upload_filehandle = $ query→ param(" img ");

to

my $ upload_filehandle = $ query→ upload(" img ");

http://articles.sitepoint.com/article/uploading-files-cgi-perl/2 [このチュートリアル]によると。

それが役に立てば幸い。


2


理由は次のとおりです。http://search.cpan.org/perldoc/CGI#CREATING_A_FILE_UPLOAD_FIELD [CGI.pm docs]で指摘されているように、フォームのエンコードタイプは「multipart / form-data」である必要があります。 それを追加すると、すべてが機能しました。


0


エンコードの代わりにこの「ENCTYPE = 'multipart / form-data'」を追加しました。

>

そしてそれは働いた