&ReadParseについて

このQ&Aのポイント
  • Perlの&ReadParse(*Param)関数を使用すると、Param変数にはフォームデータが入る。フォームデータには、チェックボックスとアップロードファイルのデータが含まれる。
  • フォームデータには、チェックボックスの選択状態とアップロードファイルの名前が含まれる。
  • &ReadParse(*Param)を使用することで、Perlでフォームデータを取得することができる。Param変数には、チェックボックスの選択状態とアップロードファイルの名前が格納される。
回答を見る
  • ベストアンサー

&ReadParseについて

perlで&ReadParse(*Param);とした場合にこのParamには何が入ってくるのでしょうか? フォームには checkboxとアップロードファイルのデータが入っています。 アップロードするファイル名が入っていて チェックボックスには1と3にチェックが付いています。 <form action=sample.cgi method=POST ENCTYPE=multipart/form-data> <input type="file" name="file" id="file"> <input type="checkbox" name="chk" value="1"> <input type="checkbox" name="chk" value="2"> <input type="checkbox" name="chk" value="3"> </form>

  • CGI
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
  • Seravy
  • ベストアンサー率47% (118/249)
回答No.2

#1です。 早とちりしました;; えっと、簡易的なPerlスクリプトを作って実験したところ、 $Param{'file'} にはセットされたファイルがガッツリはいってます。 $Param{'chk'}には、チェックボックスがチェックされている項目が順番に入ってるみたいです。 >チェックボックスには1と3にチェックが付いています。 という状態であれば、$Param{'chk'}は13です。 1だけなら、1、1と2なら12のように変化します。 もしかしたら環境で変わるかもしれません。

その他の回答 (1)

  • Seravy
  • ベストアンサー率47% (118/249)
回答No.1

おそらくParamというハッシュが生成され、(%Param) フォームのそれぞれの部品のnameがキーになり、valueが値になると思います。 例えば、 $Param{'file'}には<input type="file" name="file" id="file">で選択された値が入るはずです。 同様に$Param{'chk'}にはチェックされた値が入っているはずです。

関連するQ&A

  • ReadParseを使ってのバイナリファイルのアップロード

    ファイルをアップロードするCGIを作ろうと思い、以下のように書いてみました。そうしたところテキストファイルのアップロードには成功しましたが、バイナリファイルだとアップロード出来ても開けなかったり、画像が崩れてしまったりしてしまいました。 何故バイナリファイルだとアップロードが失敗してしまうのかわかりません。どこを直せば良いのでしょうか。 よろしくお願いします。 ----------------------------------------------- フォーム <FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="xxx.pl"> <INPUT TYPE="file" NAME="file"> <INPUT TYPE="submit" VALUE="アップロード"> </FORM> ------------------------------------------------ xxx.pl &ReadParse(*in, *f_name, *f_type); $f_name{'file'}=~/([^\\\/]+)$/; $filename = $1; open(IN, ">$filename"); print IN $in{'file'}; close(IN);

    • ベストアンサー
    • CGI
  • cgi.pm を使用してファイルUP時にtextエリア等の情報もcgiに引き渡す

    何度もPerlのところで質問していますが・・・今回は ファイルのアップロードをするときに少々もんだいが出てきてしまうことについてです。<input type="file"... を使います 以下の二つのファイルで構成しています(一部分だけ) ---form.html--- <form action="upload.cgi" method="POST" ENCTYPE="multipart/form-data"> <textarea name="input_textarea" rows="20" cols="70"></textarea> <input type="file" name="File" size=32> <input type-"submit" value="ok"> ---upload.cgi--- [formからの情報を配列変数に代入するスクリプト・・・] use CGI; $query = new CGI; $filename = $query->param('File'); # ファイル名の取得 $type = $query->uploadInfo($filename)->{'Content-Type'}; 同じファイル名が無いことを確認して、保存 という処理を行っています。upload.cgiの中身がとぼしくて申し訳ありません。 かなり省略してます。 さて、、問題となるのは ENCTYPE="multipart/form-data" とすると 配列変数にFORMからの情報がうまく入ってくれないということです、 かといってENCTYPE="multipart/form-data"を外すと CGI.pm を使った ファイルのアップロードができなくなってしまいます。 ENCTYPE="multipart/form-data" のオプションをつけて 配列変数にテキストエリアの内容を入れるにはどうすればいいのでしょうか。 テキストエリアを取り除くとファイルのアップロードはできます。 ただ、ファイルと入力したテキストを同時に処理することができないんです。

  • formの入れ子の回避方法

    アドバイス下さい。 <form method="post" name="addForm" id="addForm" action="aaa.php"> <input type="text" name="textA" id="textA"> <form method="post" name="uploadFormA" id="uploadFormA" enctype="multipart/form-data" action="aaa.php"> <input type="text" name="text1" id="text1"> <input type="file" name="upload_fileA" id="upload_fileA"> <input type="button" value="アップロード"> </form> <form method="post" name="uploadFormB" id="uploadFormB" enctype="multipart/form-data" action="aaa.php"> <input type="text" name="text2" id="text2"> <input type="file" name="upload_fileB" id="upload_fileB"> <input type="button" value="アップロード"> </form> <form method="post" name="uploadFormC" id="uploadFormC" enctype="multipart/form-data" action="aaa.php"> <input type="text" name="text3" id="text3"> <input type="file" name="upload_fileC" id="upload_fileC"> <input type="button" value="アップロード"> </form> <input type="text" name="textB" id="textB"> <input type="submit" value="送信"> </form> のような、formが入れ子になってしまっているformがあります。 これを回避する方法を教えていただきたいです。 条件としては、 ・見た目はこの順番がいい。 ・javascript、CSS等なんでも良いです。 ・各「アップロード」ボタンで、text1,2,3,4、upload_fileA,B,C,Dを送信、「送信」ボタンでtextA,Bを送信したい。 以上、お願いいたします。

    • ベストアンサー
    • HTML
  • _URL_の意味がわからない

    のですが例えば <FORM ENCTYPE="multipart/form-data" ACTION="_URL_" METHOD="POST"> <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000"> Send this file: <INPUT NAME="userfile" TYPE="file"> <INPUT TYPE="submit" VALUE="Send File"> </FORM> においてファイルを入力してサブミットすればどういうことがおきるのでしょうか?

    • ベストアンサー
    • HTML
  • チェックボックスの全選択

    <input type="checkbox" name="chk" value=1> <input type="checkbox" name="chk" value=2> <input type="checkbox" name="chk" value=3> <input type="checkbox" name="chk" value=4> <input type="checkbox" name="chk" value=5> このように同一名称のチェックボックスに対して ボタンを押下された時全てのチェックボックスを チェックするJavaScriptの 書き方を教えて貰えないでしょうか

  • ファイル選択と同時にアップロード HTML+JS

    HTMLとJava Scriptのことを質問させてください <form>タグからファイルを選択すると同時をアップロードしたいと思っています。 複数の「ファイルを選択ボタン」を設置し、それぞれ"001.jpg"、"002.jpg"など指定の名前でアップロードしたいです。 下記のようにいくつかの<form>タグを設置し、javascriptでコントロールできるかと思いケース1のように書いた場合はうまくいったのですが、ケース2のように複数並べて記述した場合、動かなくなり困っております。 どなたか教えていただけないでしょうか? よろしくお願いいたします ケース1) <form id="upload_file1" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="001.jpg" />    <input type="file" id="file_id_1" name="file_name" accept="image/jpeg"> </form> <form id="upload_file2" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="002.jpg" />    <input type="file" id="file_id_2" name="file_name" accept="image/jpeg"> </form> <script> var form = document.getElementById("upload_file1"); var input = form.file_name; input.onchange = function (){ if(this.value){ form.submit(); } }; </script> ケース2) <form id="upload_file1" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="001.jpg" />    <input type="file" id="file_id_1" name="file_name" accept="image/jpeg"> </form> <form id="upload_file2" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="002.jpg" />    <input type="file" id="file_id_2" name="file_name" accept="image/jpeg"> </form> <script> var form = document.getElementById("upload_file1"); var input = form.file_name; input.onchange = function (){ if(this.value){ form.submit(); } }; var form = document.getElementById("upload_file2"); var input = form.file_name; input.onchange = function (){ if(this.value){ form.submit(); } }; </script>

  • ドロップダウンメニューで選択された内容通りにチェックを入れるJS

    ドロップダウンメニューで選択された内容通りにチェックを入れるJS をご教示下さい。 なお、本番環境で対象とするチェックボックスのnameは、全てchkで始まっている法則性があります。 よろしくお願い致します。 <html> <head> <script type="text/javascript"> <!-- // --> </script> </head> <body> <form> <select name="myselect"> <option selected>全てにチェック</option> <option>全てチェック解除</option> <option>奇数だけチェック</option> <option>偶数だけチェック</option> <option>1、6、8番だけチェック</option> <option>3番以降全てチェック</option> </select> <br> <input type="checkbox" value="1" name="chk01" checked>1番<br> <input type="checkbox" value="1" name="chk02" checked>2番<br> <input type="checkbox" value="1" name="chk03" checked>3番<br> <input type="checkbox" value="1" name="chk04" checked>4番<br> <input type="checkbox" value="1" name="chk05" checked>5番<br> <input type="checkbox" value="1" name="chk06" checked>6番<br> <input type="checkbox" value="1" name="chk07" checked>7番<br> <input type="checkbox" value="1" name="chk08" checked>8番<br> <input type="checkbox" value="1" name="chk09" checked>9番<br> <input type="checkbox" value="1" name="chk10" checked>10番 </form> </body> </html>

  • PHP用ファイルアップロード機能について

    ドコモ端末でPHPのファイルアップロード機能を使えるようにしたいのですが、どのようにすればいいでしょうか? ちなみに、vodafoneならこの機能が使えます。 ドコモ端末で下のソースにアクセスすると、 ファイルを参照するボタンが見えず、ファイルをアップロードできません。 HTMLはキャリア毎に使えるタグがあるのは知っていますが、下のソースの場合はどのように変更すれば良いのでしょうか?ご教授下さい。宜しくお願いします。 #ソースはコレです。 <form method="post" action="upload_save.php" enctype="multipart/form-data"> <input type="hidden" name="max_file_size" value="1000000" /> <input type="file" name="upload_file" size="70"><br /> (上書き禁止) <input type="checkbox" name="forbidden" value="1" checked /> <input type="submit" value="アップロード" /> </form> #ファイル自体はphpですが、中身はほぼHTMLに関する質問になってしまい、申し訳ありません。

    • ベストアンサー
    • PHP
  • フォームの一部のfileを送信

    上手に出来る方法をアドバイス下さい。 <form method="post" name="uploadForm" id="uploadForm" enctype="multipart/form-data" action="aaa.php"> <input type="text" name="text1" id="text1"> <input type="file" name="upload_file" id="upload_file"> <input type="button" value="アップロード"> <input type="text" name="text2" id="text2"> <input type="submit" value="送信"> </form> のようなフォームで「アップロード」が押された場合、"upload_file"だけ送信したいのですが上手い方法があるでしょうか? また、「送信」が押された場合、"upload_file"以外を送信したいです。 「POST先で無視をする」以外でお願いします。

  • 2つのボタンによるSubmitについて

    javascript初心者です。 <form name="sample01" action="aaa.html" method="POST" >  <input type="checkbox" name="chk[]" value="1">  <input type="checkbox" name="chk[]" value="2">  <input type="checkbox" name="chk[]" value="3"> </form> このチェックボックスの値を、submitで渡したいのですが、 AボタンとBボタンの2つ設けて、それぞれクリックすると別ファイルに遷移させたいのです。 Aボタンは、「sample01」のaction属性にあるaaa.html Bボタンは、bbb.html こういったことはできるのでしょうか?

専門家に質問してみよう