ファイルのデータがなくなってしまします・・・

このQ&Aのポイント
  • perl/CGIプログラミングの勉強中の者です。フォーム記入(日付選択、本文の記入、ファイル選択)後、確認画面において、上記をベタ書きにて表示し(ファイルはパスの表示)、CSVへの書き込み、指定フォルダへのファイルのアップロードをするプログラムを作っています。
  • ファイルのアップロードに関してなのですが、<input type=file name=fileup>でsubmitした後、確認画面で$FILEに格納して一旦パスを表示、それを再び<input type=hidden name=fileup value=$FILE>でsubmitして、フォルダへアップロードし、一覧画面へと戻るという手順で組んでいます。しかし、ファイル名、拡張子などは正しくアップロードされているのですが、肝心の中身のデータが0バイトになってしまいます。自分では確認画面からsubmitする時にhiddenに入れているのがいけないのかなぁ。と思っているのですが…
  • 何か良い対処法、また他に良い手順があれば教えてください。宜しくお願いします。
回答を見る
  • ベストアンサー

ファイルのデータがなくなってしまします・・・

perl/CGIプログラミングの勉強中の者です。 フォーム記入(日付選択、本文の記入、ファイル選択)後、確認画面において、上記をベタ書きにて表示し(ファイルはパスの表示)、CSVへの書き込み、指定フォルダへのファイルのアップロードをするプログラムを作っています。 ファイルのアップロードに関してなのですが、 <input type=file name=fileup> でsubmitした後、 確認画面で$FILEに格納して一旦パスを表示、 それを再び <input type=hidden name=fileup value=$FILE> でsubmitして、 フォルダへアップロードし、一覧画面へと戻るという手順で組んでいます。 しかし、ファイル名、拡張子などは正しくアップロードされているのですが、肝心の中身のデータが0バイトになってしまいます。 自分では確認画面からsubmitする時にhiddenに入れているのがいけないのかなぁ。と思っているのですが… 何か良い対処法、また他に良い手順があれば教えてください。 宜しくお願いします。

  • Perl
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.1

 えと。 1.<form>タグの enctype オプションに "multipart/form-data" を追加する。 2.中身のデータは自分でエンコードする。  以上2点の処理を追加する必要があります。  特に2.の処理は面倒なので、cgi-lib.pl などのフリーソフトを利用したり、可能であれば Perl に内臓されている CGI モジュールを使ったりします。

関連するQ&A

  • basp21でのファイルアップロード確認画面

    BASP21を使用してファイルのアップえロードをしています. 現状で<input type=file>で選択したファイルを submitボタン押下でファイルのアップロードする所までは 期待どうりの動作しています. ここに、アップロード確認画面をつけくわえたいのですが 確認画面でどのようにファイルうけ渡せばよいか分からず困っています つまり、 1.ファイル選択画面   ・ファイル選択   ・submitボタン     ↓ 2.確認画面(アップロードするファイルのパス表示)   ・アップするファイルパス表示   ・submitボタン     ↓ 3.アップロード結果表示画面   (ここで始めてファイルのアップロード)   ということがしたいのです. しかし、2の状態でファイル情報を保持し、 3へ受け渡すのかが分かりません. どうか、お力添えお願いします.

  • formのfileの値をhiddenでも持ちたい

    お疲れ様です。いつもお世話になっております。 on~~イベントで値をコピーするやり方でいけるのかもと思いつつ、 うまくイメージがまとまらないので質問させてください。 <input type="file">で、ファイルが選択されたら、その値(ファイルのパス)を同じフォーム内のhiddenにも持ちたいのです。 もっと具体的にいうと hiddenに持った時、ファイル名の拡張子にかかわらず、拡張子を落として、[ファイル名]_thumnail.jpgとつけて、submitしたいのです。 <form action="xxx.php" method="post" enctype="multipart/form-data" name="myForm"> <input type="file" name="upfile" /> <input type="hidden" name="thumnail" /> </form> document.myForm.upfile.value=document.myForm.thumnail.value; みたいな感じでできるのでしょうか。 よろしくお願いします。

  • 確認画面で表示される商品名にリンクをつけるには!?

    よくショッピングカートとかで表示される確認画面で商品名は表示されるのですがこれをクリックして新しい画面(***.html)が出るようにするにはどうすればよいのでしょうか?よろしくお願いいたします。 ちなみに現在は下記のような感じになっています。 <form method=post action="../cart.asp"> <input type=hidden name="action" value="regist"> <input type=hidden name="goods" value"商品名"> <input type=hidden name="unit" value="100"> <input type=submit value="カゴへ"> </form>

    • ベストアンサー
    • CGI
  • ファイルのアップロード処理を確認画面で確認後にアップロードするようにし

    ファイルのアップロード処理を確認画面で確認後にアップロードするようにしたいのですが、プログラムの書き方がわかりません。確認画面を通さずにやればアップロードできるのですが。どうすればいいのか教えてもらえるとうれしいです。 流れとしては「アップロード画面でファイルを指定」→「確認画面でアップロードボタンを押す」→「アップロード結果画面」です。作成中のソースは以下のようになっています。 ■upload.html(アップロード画面) <html><head><title>アップロード画面</title></head><body> <form action="kakunin.php" method="post" enctype="multipart/form-data"> ファイル:<br> <input type="file" name="upfile" size="30"><br> <input type="submit" value="確認画面へ"> </form></body></html> ■kakunin.php(確認画面)<未完成> <html><head><title>確認画面</title></head><body> <?php $upfile=$_POST['upfile']; print "選択したファイル: $upfile<br>\n"; ?> <br>この内容でよろしいですか?<br> よろしければ「アップロード」ボタンを押してください。<br> <form action="uploadkekka.php" method="post" enctype="multipart/form-data"> <input type="submit" value="アップロード"> </form></body></html> ■uploadkekka.php <html><head><title>アップロード結果</title></head><body> <p><?php if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "uploadfiles/" . $_FILES["upfile"]["name"])) { chmod("uploadfiles/" . $_FILES["upfile"]["name"], 0644); echo $_FILES["upfile"]["name"] . "をアップロードしました。"; } else { echo "ファイルをアップロードできませんでした。"; } } else { echo "ファイルが選択されていません。"; } ?> </p></body></html>

    • ベストアンサー
    • PHP
  • Windowsのエクスプローラの検索を起動したい。

    1)エクスプローラの検索起動方法を知りたい。 スタート→検索→ファイルやフォルダのような手順ではなく、一発に起動する方法を知りたい。 2)自作ウェブサイトからサイト内(イントラネット)のファイル検索する時に使いたい。 下記のプログラムはおかしいと思いますが。。 <form method=get action="file://○○/○○/○○/"> <input type="hidden" name="hl" value="ja"> <input type="hidden" name="ie" value="Shift_JIS"> <input type="hidden" name="oe" value="Shift_JIS"> <input type="hidden" name="as_sitesearch" value="file://○○/○/○/"> <input type="text" name="q" size="15" maxlength="55" value="" /> <input type="submit" name="btnG" value="検索"> </form>

  • ファイル間のデータの受け渡しについて hidden? session?

    1.php (フォームを表示) 2.php (入力内容の確認ページ) 3.php (最後のページ、送られた値を使用し、メール送信やデータベースに書き込むなどの処理をしたい。) とhiddenを使い、3つのファイルを作成しました。 ファイル"1.php" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title></title> </head> <body> <form action="2.php" method="post"> <input type="text" name="data1" value="データその1"> <input type="hidden" name="data2" value="隠しデータ"> <input type="submit" name="" value="送信"> </form> </body> </html> ファイル"2.php" <?php echo "<h1>確認ページ</h1>"; echo $_POST[data1]."<BR>"; echo $_POST[data2]; print<<<_HOGE_ <form action="3.php" method="post"> <input type="hidden" name="data1" value="$_POST[data1]"> <input type="hidden" name="data2" value="$_POST[data2]"> <input type="submit" name="" value="送信"> </form> _HOGE_; ?> ファイル"3.php" <?php echo $_POST[data1]."<BR>"; echo $_POST[data2]; ?> 2.phpの(入力内容の確認ページ)を見ているときに、他の人が2.phpにアクセスして入力内容を盗み見る事は出来るのでしょうか? (2.phpに直接アクセス出来ないように、リダイレクト処理はするつもりですが。) 2.phpから3.phpに値を渡す場合、このようなhiddenの使い方は間違っていますか? セッションを使った方が良いのでしょうか?

    • ベストアンサー
    • PHP
  • UPDATEのファイルを1つに統一させる?

    複数ファイル(FORM)の内容を全部1つに集約できればよいのですが・・・。 302.htm <INPUT type = "text" name = "hagi"> <input type="submit" value="新規登録"> <input type="reset" value="やり直す"> <input type="hidden" name="mode" value="confirm"> 303.htm <INPUT type = "text" name = "hoge"> <input type="submit" value="新規登録"> <input type="reset" value="やり直す"> <input type="hidden" name="mode" value="confirm"> 上記内容だと両方ともconfirm.phpにいき処理させようとしますが、UPDATE文がちがってしまうのでむりですよね? やはり1つのフォームにつき、1つの更新処理ファイルが必要でしょうか?1つのファイルにできてもifで分岐させては意味があり ません。 1つのUPDATE文、INSERT文で省略できないものかをお尋ねします。 複雑になってしまうなら、いままでどおりファイルをわけて書く予定です。

    • 締切済み
    • PHP
  • textareaでのデータ受け渡し

    入力画面と参照画面を作成しています 入力画面にtextareaと参照ボタンがあります 両画面ともPHPとテンプレートファイルを使用しています 下記のようにテンプレートファイルに記入しています <tr> <td>内容</td> <td> <textarea name=srinaiyou rows=5 cols=42></textarea> </td> </tr> <tr> <td>仕入先</td> <td> <input type=text name=sritokcd value="" size=10 maxlength=8> <input type=submit name=sub_refer value=参  照> </td> </tr> 参照画面は下記のようにPHP内で記入しています 得意先のデータが複数行になるためPHPに記入しています <table width=50% border=1 cellspacing=0 cellpadding=0> <tr bgcolor=#ccccff> <th width=15% nowrap>得意先コード</th> <th width=42% nowrap>得意先名</th> </tr> <tr> <td align=center>12354879</td> <td align=center><table border=0 cellspacing=0 cellpadding=0><form name=frm12354879 method=post action=/beta/index.php><tr><td><input type=hidden name=page value=T_SyuuriEntry> <input type=hidden name=srinaiyou value=テスト 備考> <input type=hidden name=sritokcd value=12354879> <a href=JavaScript:document.frm12354879.submit()>ABC工務店建設会社</a></td></tr></form></table></td> </tr> 入力画面のtextareaに テスト 備考 と入力して参照ボタンを押して参照画面を表示します 参照画面から得意先名を選択したら入力画面に戻るようにしていますが 入力画面が表示されるとtextareaには"テスト"しか表示されません。"備考"が消えてしまいます うまくデータが受け渡しできません 参照画面を表示した時にはデータが渡っているみたいですが... 同じような質問を見て自分なりにいろいろと試しましたが解決できません 何卒よろしくお願いします

    • ベストアンサー
    • PHP
  • フォームデータの取得について

    Aという画面からBという画面を呼び出し、B画面でファイルのアップロードを行いたいと思っています。 AからBの呼び出しは、 <a href="javascript:document.form1.submit()">B画面へ</a> ・・・ <form name="form1"method="post" action="upload.cgi" > <input type="hidden" name="id" vlue="123"> </form> このようにリンクからサブミットしています。 B画面の表示とファイルのアップロードを行うプログラムupload.cgiでAからのデータ(id)が受け取れません。 B画面からupload.cgiを呼んだ時は、アップロードファイルやhidden項目も正常に取得できています。 サブミットボタンからの送信とjavascriptからのサブミットでは送信データが違うのでしょうか。 cgi-lib.plのReadParseを使うとA画面からのデータを正常に取得できるのですが、 B画面がファイルアップロードを行うため、別の処理でフォームデータの取得を行っています。 (コーディングは長さ制限のため書けませんでしたが、とほほのWWW入門のwwwupl2.cgiを参考にしています) どなたかご存知の方いらっしゃいましたら、お願いいたします。

  • Submitが使えないFormでのデータ送信

    次のようなFORMでSubmitがなくって画像クリックし、次の画面へ いく場合ですが、どういうコードを書けばいいのでしょうか? よろしくお願いします。 <FORM name=myForm action=http://abc.com/abc.cgi method=post> <TD> <INPUT type=hidden value=itemA name=mycmd> <INPUT type=hidden value=9999 name=myid> <INPUT type=image src="/img/image.gif" border=0 name=item> </TD> </FORM>

専門家に質問してみよう