xreaでcgiを作っているのですが、ファイルのアップロードがうまく出来ないのでヒントをいただけると助かります。


http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod

こちらの真ん中くらいにuploadについての説明があるのですが、これを参考にして作りました。

[送信]

my $query = CGI->new();

print $query->filefield(-name=>'uploaded_file',
-default=>'starting value',
-size=>50,
-maxlength=>80);

[受信]

my $query = CGI->new();

my $filename = $query->param('uploaded_file');
my $fh = $query->upload('uploaded_file');

print Dumper $filename // D:\\hogehoge.txt(ローカルのパス)
print Dumper $fh // undef

このような感じで$fhになにも入りません。
いろいろと検索してみるのですが、どうすればいいか分からずに困っています。

回答の条件
  • 1人5回まで
  • 登録:2009/01/23 16:30:31
  • 終了:2009/01/24 10:23:26

回答(1件)

id:m6u No.1

《み》回答回数82ベストアンサー獲得回数62009/01/23 16:57:24

ポイント60pt

 フォーム送信にかかわるエンコーディング・タイプが不当なのかもしれません。 サンプルコードに表れていませんが、《これはエンコーディング・タイプを&CGI::MULTIPARTでstart_form()を呼び出すか、普通のstart_form()の代りに新しいメソッドstart_multipart_form()を呼び出すかのどちらかで行うことが出来ます。》にヒントがあります。

id:southgate_01

ありがとうございます、早速やってみますね。

また後ほど結果を報告します。


※追記

教えていただいた方法でやったのですがダメでした。

コメント欄にのソースを載せたので、もしよければ見てください。

2009/01/23 20:01:20
  • id:southgate_01
    southgate_01 2009/01/23 19:55:46
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>
    upload
    </title>
    </head>

    <body>
    <form method="post" action="upload.cgi" enctype="multipart/form-data">

    <table>
    <tr>
    <td>ファイル</td>
    <td><input type="file" name="uploaded_file" value="starting value" size="50" maxlength="80" /></td>
    </tr>
    <tr>
    <td></td>
    <td><input type="submit" name="submit" value="submit" /></td>
    </tr>
    </table>
    </form>
    </body>
    </html>
  • id:southgate_01
    southgate_01 2009/01/23 20:09:32
    #!/usr/bin/perl - T

    use strict;
    use warnings;

    use CGI;
    use CGI::Carp qw(fatalsToBrowser);
    use Template;
    use Data::Dumper;

    my $query = CGI->new();

    #ファイル名
    my $filename = $query->param('uploaded_file');

    #ファイルハンドル
    my $fh = $query->upload('uploaded_file');

    print $query->header(-charset=>"utf-8");
    print Dumper ($filename);
    print Dumper ($fh);

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません