• 締切済み

添付ファイル

先に申しておきますが、CGIについては無知です。 メールフォームに画像添付ファイルを入れたいと思っています。 お名前.comをサーバーに使っているので以下を変えて作りました。 http://support.gmo.jp/onamae/faq/premier_win/cgi/formmail.php <input size="40" type="file" name="filename"> を入れるだけではダメでした。 文字のフォームは問題ないのですが、やはりちゃんとしたCGIでないと無理なのでしょうか? もし、無理なようでしたら他に似たアイデアはございますでしょうか? よろしくお願いします。

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

みんなの回答

  • golive001
  • ベストアンサー率54% (20/37)
回答No.2

<input size="40" type="file" name="filename"> 上記の記述をしても、そのデータを受け取る先(←これがCGIプログラム)がないわけです。 従って、実行不可能です。 どうしてもやりたい場合は、独自CGI(PerlなりPHP)が動かせるサーバに移転した上で、フリーのソースコードを拾ってきて、設定変えて、アップして動かすしかないでしょう。

  • sjam
  • ベストアンサー率41% (26/63)
回答No.1

HTMLだけでなく,CGI自体に改造の手を入れないと出来ませんので、一般的なレンタルフォームでは無理です。 CGIを探してきて設置という事になるかと思いますので、残念ながら多少の基礎知識は必要になってきます。

関連する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
  • PHP 画像添付フォームに関しての質問です。

    PHP 画像添付フォームに関しての質問です。 http://okwave.jp/qa/q4891926.html 以前質問させて頂いた内容でフォームを作成しています。 申込html→finish.php の場合はうまくいきます。 申込html→確認→finish.php にするとうまくいきません。 可能であれば、確認画面でアップした画像を表示できればと思っております。 何かアドバイスして頂けると助かります。 申込html <form method="post" action="kakunin.php" enctype="multipart/form-data"> <input type="hidden" name="max_file_size" value="1000000"> <input type="hidden" name="upfile" value="%%upfile%%"> <input name="upfile" id="upfile" type="file" size="50" value="%%upfile%%"> 確認html <form method="post" action="finish.php"> <td class="border5px-fff">%%upfile%%<input type="hidden" name="upfile" value=""></td> finish.php $updir = "./photo/"; $filename = $_FILES['upfile']['name']; //form の「upfile」の値 //ファイルを指定 $id_file = "id.dat"; //ファイルを開く $fp = fopen($id_file,"r"); $id = fgets($fp); fclose($fp); //ファイルの数字に1を足します。 $id = $id + 1; $fp = fopen($id_file,"w"); //保存します。 fputs($fp, $id); fclose($fp); //名前の前に番号を追記します。 //$filename = 'ID_'.$id.'_'.$filename; //番号のみ $filename = $id.'.jpg'; move_uploaded_file($_FILES['upfile']['tmp_name'], $updir.$filename);

    • ベストアンサー
    • PHP
  • 語尾に&submitという文字列が付加されてしまう

    OSはFreeBSD5.4です。 HTMLページ内で以下のフォームを使っています。 メールアドレスの文字列をformmail.cgiに渡すと 語尾に&submitという文字列が付加されてしまいます。 付加されないようにする方法を教えてください。 現在は空文字列に置換しています。 formmail.cgiの詳細が必要でしたらご指摘ください。 <form method="POST" action="cgi-bin/formmail.cgi"> メールアドレス:<input type="text" name="email"> <input type="submit" value="送信する"> </form>

    • ベストアンサー
    • CGI
  • アップローダーの作製

    お世話になります。 アップローダーでmp4をUPしたいです。 下記の様なフォームを記述したところ、jpegはUP出来たのですが、mp4はアップできませんでした。 フォーム-------------------------------------------------------------------------------------- <?php //アップローダー function upload(){ $filename = $_GET["onamae"]; $max = 1024*1024*10; $array = array("01.jpg","02.jpg","03.jpg","pv.mp4"); for($i = 0; $i < count($array); ++$i){ ?> <div> <form method="post" enctype="multipart/form-data" action="uploader.php"> <input type="hidden" name="MAX_FILE_SIZE" value="<?php print $max; ?>"> <input name="userfile" type="file"> <input type="submit" value="アップロード" name="up"> <input name="filename" type="hidden" value="<?php print $array[$i]; ?>"> <input name="filemei" type="hidden" value="<?php print $filename; ?>"> </form> </div> <?php } } ?> uploader.php--------------------------------------------------------------------------------- <?php $filedir = "../girl/" . $_POST["filemei"] . "/" . $_POST["filename"]; $file_path = $filedir ; if(move_uploaded_file($_FILES['userfile']['tmp_name'], $file_path)){ ?> <div class="message">ファイルのアップロードに成功しました。</div> <?php } else{ ?> <div class="message">ファイルのアップロードに失敗しました</div> <?php } ?> ---------------------------------------------------------------------------------------------- 記述ミスあるかもです。すいません。

    • 締切済み
    • PHP
  • 入力フォームとファイル添付を同時に実行したい。

    PHPもhtmlもはじめたばかりの超初心者です。 入力フォームの文字と添付ファイルを同時にPOSTしたいの ですがjavascriptを使わないと無理でしょうか? ******************************** <html> <head> <title>TESTフォーム</title> </head> <body> <form action="test.php" method="post"> 名前:<br> <input type="text" name="name" size="30" value=""><br> <P> &nbsp;&nbsp;&nbsp;ジャンル:<br>  <input type="radio" name="bunrui" value="abc">あ  <input type="radio" name="bunrui" value="bbb">い  <input type="radio" name="bunrui" value="sss">う </P> &nbsp;&nbsp;&nbsp;内容:<br> <textarea name="comment" cols="50" rows="5"></textarea><br> <P> 添付:<input type="file" name="file1"> <P> <input type="submit" value="投稿する"> </form> </body> </html> ******************************** 添付の部分をどうやってtest.phpに渡せばよいかわかりません。 <form action="test2.php" method="post"> 添付:<input type="file" name="file1"> と付け加えても無駄というところまでは調べております。 個別に書いたphpで添付したファイルをsambaサーバーに保存 、入力フォームをtxtにしてsambaへ保存するところまではできました。 ただ同時実行だとどう書けばよいか悩んでおります。 こういうレベルは質問してはいけないんですかねえ・・・ どなたか教えていただけると幸いです。

  • PHPでファイルアップロードがうまくいきません

    PHP初心者なんで宜しくお願い致します。 ファイルアップロードのシステムを作っているんですが どうもうまくいきません。 <form action="<? $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> 写真:<input type="file" name="file" size="40" /> <input type="submit" name="new_write" value=" 登録 "> </form> <? if(isset($_POST['new_write'])){ $filename = $_FILES['file']['name']; $updir = "./image/".$filename; if(move_uploaded_file($_FILES['file']['tmp_name'], $updir)){ print "OK"; }else{ print "NG"; } } ?> 上記の記述をしています。 そしてphpinfo()で情報を確認しても file_uploadsはONになっています。 そしてPHPのバージョンは4.4.2です。 単純なことかもしれませんが、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • CGIでのフォームの作成

    Dreamweaverを使ってHPの作成をしています。 問合せのフォームについて教えてください。 CGIの知識がないため、以前他の方が作ったHPがあって、そのソースを見ながら作っています。 その中で、いくつかわからない点があるので教えてください。 1.<form name="●●●" method="post" action="/cgi-tool/formmail.cgi">   <INPUT TYPE="hidden" NAME="FM_CONFIG" VALUE="/cgi-local/config.txt">   <INPUT TYPE="hidden" NAME="OPT:NEED:a_name" VALUE="貴社名">・・・ と続くのですが、最初のaction=以降が何のことかわかりません。上記のように書く場合は、"/cgi-tool/formmail.cgi"というCGIを作成しなければならないのでしょうか。以前の方は、"/cgi-local/config.txt"というテキストファイルは作成してありました。 2.最後に、<input type="submit" value="確認画面へ">というのをいれてボタンは表示されましたが、そのボタンを押してもページが表示されません。何か、他の作業を加えなければなりませんか? CGIというのは、サーバーによって設定をかえなければいけなかったりするのでしょうか? ちなみに、テストページで使用してみてみているのはページオン?、実際にアップするのは会社のサーバーになります。 全く知識がないためとんちんかんなことを聞いていたら申し訳ございませんが、助言をおねがいします。

  • 添付つきメールフォーム:「an undefined value」エラーについて

    はじめまして。添付機能付きのメールフォームを作成しているPerl初心者です・・・。 以下のようなエラーが出てしまうのですが、どなたかアドバイスをお願いいたします。 ★フォーム★ 添付部分は、type="file" name="file"です。 <form action="form.cgi" method="post" enctype="multipart/form-data">としています。 ----------------------- use CGI; $query = CGI->new; # 全てのパラメータ名を取得 @name = $query->param; foreach $name (@name){ $val = $query->param($name); push(@val,$val); $in{$name} = $val; } # ファイル処理 if ($in{'file'} ne "") { $fh = $query->upload('file'); $type = $query->uploadInfo($fh)->{'Content-Type'}; if ( $fh =~ /\w+\.\w+$/ ){ $filename = $&; }else{ $fh =~ /\w+$/; $filename = $&; } } --------------------- この処理で送信をすると、 「Can't use an undefined value as a HASH reference at :\www\home\information\pressform.cgi line 78.」 とエラーになってしまいます。 line 78は、「$type = $query->uploadInfo($fh)->{'Content-Type'};」の部分です。 $filename、$type、$fhを表示させるとそれぞれ値は出ているようなんですが・・・。 例) $filename:photo_depp_img4.jpg $type:image/pjpeg $fh:C:\Documents and Settings\oh_hp\デスクトップ\photo_depp_img4.jpg $queryは、CGI=HASH(0x1b0f41c)と表示されます。 ・確認画面まではうまく表示されます。 ・添付ファイルをつけなければ、上記エラーはでないで送信完了画面までいきます。 上記エラーになる原因はなんでしょう?? どなたかお教えください!よろしくお願いします。

    • 締切済み
    • 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" のオプションをつけて 配列変数にテキストエリアの内容を入れるにはどうすればいいのでしょうか。 テキストエリアを取り除くとファイルのアップロードはできます。 ただ、ファイルと入力したテキストを同時に処理することができないんです。

  • Webフォームについて

    OCNの無料ホームページサービスで、Webフォームを作成しました。 (団体への加入申込みフォームです) 下記のフォームで、未入力欄がある場合、   ・未入力を再度促す画面に戻るには?   ・入力した内容を確認して送信するには?   ・送信が終わって「ありがとうございました」旨を知らせる画面を表示するには?     (OCNサービスに標準仕様でも送信thank you画面があるが、画面を閉じる機能がない) HTMLタグが判らないので、ご教授をお願いします。 <html> <head> <title> サンプルフォーム </title> </head> <b>△○○△会加入フォーム</b></p> <FORM METHOD="post" ACTION="/cgi-bin/formmail.pl"> <INPUT TYPE="hidden" NAME="recipient" VALUE="△△@○○.ocn.ne.jp"> <INPUT type="hidden" NAME="subject" value="登録" /><BR> あなたのE-mail<BR> <INPUT TYPE="TEXT" NAME="email"><br> あなたの氏名<BR> <INPUT TYPE="TEXT" NAME="氏名"><br> 住所<BR> <INPUT TYPE="TEXT" NAME="住所" /><br> コメント<BR> <INPUT TYPE="TEXT" NAME="コメント"><br> <INPUT TYPE="submit" ACTION="/cgi-bin/formmail.pl" VALUE="送信" METHOD="post"> <INPUT TYPE="reset" VALUE="クリア"><br> </form> </div> </body> </html>

専門家に質問してみよう