画像ファイルをアップロードする方法

このQ&Aのポイント
  • 掲示板に画像ファイルやpdfファイルをアップロードする方法について説明します。
  • フォームから画像ファイルを選択し、サーバーに保存する方法を解説します。
  • プララのサーバーを利用して画像ファイルをアップロードする際に注意すべきポイントについて説明します。
回答を見る
  • ベストアンサー

画像ファイルをアップロードする方法

掲示板を作りました。 画像ファイルやpdfファイルをアップロードできる 機能もつけたいと思います。 まずは保存方法なのですが、本で下のようにつく ってみました。 書き込み部分↓ use CGI qw(:standard); $file = param('file'); open OUT, "> $file"; while ( <$file> ) { print OUT $_; } フォーム部分↓ <FORM method="POST" enctype = "multipart/form-data" action="write.cgi"> <TR> <TD valign="top" width="116">■メッセージ(※)</TD> <TD colspan="3" width="371"><TEXTAREA rows="10" cols="50" wrap="soft" name="message">$message</TEXTAREA></TD></TR> <TR> <TD valign="top" align="right" colspan="2"><INPUT TYPE="file" NAME = "file" size ="50"></TD> </TR> </TABLE> <INPUT TYPE=HIDDEN NAME=time VALUE="$time"> <INPUT TYPE=HIDDEN NAME=mynum VALUE="$mynum"> <INPUT type="submit" value=" 送 る "> <INPUT type="reset" value="やり直す"> 上記のようにやったら内部エラーが出てしまいました。 サーバーはぷららの http://www.plala.or.jp/access/community/phps/ucgi_main.html を利用しています。 use CGI; がいけないのでしょうか?

noname#102619
noname#102619
  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • pipipi523
  • ベストアンサー率40% (148/365)
回答No.1

open OUT, "> $file"; while ( <$file> ) { 書き込み用のファイルから読み込み?等々いろいろありますが・・ とりあえずこちらが参考になると思います http://www.ksknet.net/perl/post_26.html

noname#102619
質問者

お礼

回答ありがとうございました。 ちがう問題が浮上しまだ解決していないのですが、一旦締め切らせて頂きます。また質問したときにはよろしくお願いしますm(__)m

関連するQ&A

  • &ReadParseでフォームの値が取れない

    require "./cgi-lib.pl"; ・ print << "END"; <FORM method="POST" action="$self"> <TABLE border="0" cellspacing="6" width="600"> <TR> <TD valign="top" width="116">■メッセージ(※)</TD> <TD colspan="3" width="371"><TEXTAREA rows="10" cols="50" wrap="soft" name="message">$message</TEXTAREA></TD></TR> <TR> <TD valign="top" align="right" colspan="2"><INPUT TYPE="file" NAME = "file" size ="50"></TD> </TR> </TABLE> <INPUT TYPE=HIDDEN NAME=mycmd VALUE=do_write> <INPUT TYPE=HIDDEN NAME=time VALUE="$time"> <INPUT type="submit" value=" 送 る "> <INPUT type="reset" value="やり直す"> </FORM>・ ・ ・ ・ sub do_write { &ReadParse; $message = $in{'message'}; これでmessageの値が取れるはずなのですが、空のようです。同じプログラムで使えてたときもあったのですが、いじっているうちにReadParseが機能しなくなりました。といっても、cgi-libの中をいじったわけではありません。 確実にmessageフォームの中身を取る方法があったら 教えてください。 あるいは原因を探る方法でも結構です。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • POSTによるファイル・アップロード、ファイルが2回送信される。

    POSTによるファイル・アップロード、ファイルが2回送信される。 <form method="POST" action="file_up.cgi" enctype="multipart/form-data" target="_blank"><table width="650" border="0" cellspacing="3" cellpadding="3" bgcolor="#AAAAFF" align="center"> <tr align="center"><td colspan="2"><b>ファイル・アップロードのサンプル(実験中!)</b></td></tr> <tr><td align="right">ファイル名:</td><td align="left"><input type="file" name="NAME" style="background-color:aqua"></td></tr> <tr><td></td><td><input type="submit" value=" 送信 "><input type="reset" value="クリア"></td></tr></table></form></body></html> 参照ボタンでファイルを選択し、「送信」し、サーバー側でメッセージ・ボディーを見ると選択したファイルが2回送られてきています。 全く無駄な送信だと思うのですが、何か設定があるのでしょうか? それとも仕様でしょうか? 宜しくお願い致します。

    • ベストアンサー
    • HTML
  • valign=topが機能しません

    CGIファイル内のテーブルのtdにvalign=topを記述しましたが、テキストが上にきてくれません。 ソースは以下です。「メッセージ」の文字が上にくるようにするにはどうすれがいいか教えてください。 よろしくお願いします。 <center> <TABLE BORDER=0 CELLPADDING=10 CELLSPACING=10> <tr> <td align=right nowrap><font size=2>お名前</font></td> <td align=left> <input type="text" name="name" size="30" maxlength="100" class=textarea> </td> </tr> <tr> <td align=right nowrap><font size=2>タイトル</font></td> <td align=left><input type="text" name="title" size="50" maxlength="200" class=textarea></td> </tr> <tr> <td valign=top align=right nowrap ><font size=2>メッセージ</font></td> <td align=left><textarea name="msg" cols="50" rows="7" class=textarea></textarea></td> </tr> <tr> <td align=right nowrap><font size=2>パスワード</font></td> <td align=left><input type="password" name="pass" size="16" maxlength="200" class=textarea value=$cpass></td> </tr> <tr> <td colspan=2> <hr size=1 noshade> </td> </tr> <tr> <td align=center colspan=2> <div align="center"><input type="submit" value="投稿する" class=input2 onClick="writeCookie()"></div></td> </tr></form> </table> </center>

  • VBAでアップロード

    ホームページ作成をしているのですが、ローカルにあるhtmlファイルをvbaでアップロードしたいのですが やり方がよくわかりません。 ソースは *************************************************************** <TABLE border=0 cellSpacing=0 cellPadding=0 width=650> <TBODY> <TR vAlign=top> <TD width="50%"> <TABLE style="FONT-SIZE: 12px" border=0 cellSpacing=1 cellPadding=3 width=323 bgColor=#ff6600> <FORM encType=multipart/form-data method=post action=/tok2_ftp/index.php> <INPUT name=act value=upload type=hidden> <INPUT name=MAX_FILE_SIZE value=300000 type=hidden> <INPUT name=dirname value=/ type=hidden> <TBODY> <TR align=center> <TD bgColor=#ffcc66>ファイルアップロード</TD></TR> <TR align=center> <TD class=line-height1 bgColor=#ffffff> <BR>アップロード可能なサイズは、1ファイル300kbまでです。<BR> <FONT color=#ff0000>※既に同じファイル名が存在する場合は上書きされます。</FONT> <BR><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file> <BR><BR><INPUT style="WIDTH: 150px" value=アップロード type=submit> <BR><BR></TD></TR></FORM></TBODY></TABLE></TD> *************************************************************** このような感じなのですが、 VBAで objIE.document.all("upfile[]")(0).Value = "test" 'エラーにならないけど値も入らない objIE.document.forms(0).all("upfile[]")(0).Value = "test" 'エラーにならないけど値も入らない 'objIE.document.forms(0)("upfile[]").Value = "test" 'エラー 'objIE.document.all("upfile[]").Value = "test" 'エラー objIE.document.forms(0).submit '押せる こんな事をやってみましたが、値を入れる事ができません。 解決方法を教えてください。

  • ファイルアップロードについて

    ファイルアップロードについて質問させて下さい。 ID、ファイルアップロードの機能の2つがあります。 ファイルを指定し、submitボタンを押下すると「b.php」に遷移します。 ファイルをアップロードした場合には遷移をせず ID、画像パスが入力されている場合のみ「b.php」に遷移したいのです。 入力チェックはjavascriptで行っていますが、その場合には「action=""」として javascript側で遷移するしか方法は無いのでしょうか? ---a.php---- <form enctype="multipart/form-data" action="b.php" method="post" name="a"> <input type="hidden" name="MAX_FILE_SIZE" value="50000000" /> <table> <tr> <th>ID</th> <td><input type="text" name="ID" value=""></td> </tr> <tr> <th>画像</th> <td><input type="file" name="img" value=""> <input type="submit" name="upload" value="upload"> </td> </tr> </table> <a href="#" onClick="javascript:check('a');"><img src="button.jpg"></a> </form> お手数ですが、ご教授よろしくお願い致します。

    • ベストアンサー
    • PHP
  • POSTでファイルアップロード

    fedora7、PHP5、Mysql5を使っています。 画像ファイルやコメント、タイトル等を<form method="POST" action="regchk.php">で、渡すreg.phpファイルと、それお受け取り画像ファイルサイズやコメント文字数等をチェックするregchk.phpファイルがあります。 reg.phpの<form >部分が、 <form method="POST" action="regchk.php" enctype="multipart/form-data"> <table > <tr> <th>写真のファイル</th><td><!-- MAX_FILE_SIZE must precede the file input field --> <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> <input type="file" name="uploadfile" size="60"></td> </tr> <tr> <th>タイトル </th><td><input type="text" name="title" size="60" maxlength="50"></td> </tr> <tr> <th>コメント </th><td><textarea rows="7" cols="60" name="comment"></textarea></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" name="reg" value=" 登録 "> <input type="reset" value=" クリア "> </td> </tr> </table>  </form>です。 そして、regchk.php の$_POST['uploadfile'] で、画像ファイルがアップされているか、チェックしたいのです。以下のように。 $uploadfile = $_POST["uploadfile"]; echo $uploadfile."<br>"; ----→空白が表示される //エラーコード 検証用 echo $_FILES['uploadfile']['error']."<br>"; ---→ 0が表示される echo $_FILES['uploadfile']['tmp_name']."<br>"; --→ /usr/tmp/phpアルファベット echo $_FILES['uploadfile']['size']."<br>"; ----→9894 //入力データのチェック $errmsg = ""; if (strlen($uploadfile) == 0) { $errmsg .= "写真のファイルが指定されてません.<br />"; } ↑このif文でエラー文字列が、$errmsg に入る。 アパッチのerror_logを見ると、 Notice: Undefined index: uploadfile in /home/user1/public_html/regchk.php on line 5, と、出ており、5行目とは $uploadfile = $_POST["uploadfile"]; のことです。 自分は、やり方が根本的に間違っているのでしょうか? ご教授の方、よろしくお願いします。

    • ベストアンサー
    • PHP
  • アンケートをCSVに落とした時の並び順

    以下のHTMLのようなアンケートフォームを作っています. CSVに落とした時の並びを変えたいのですが,どなたかお知恵を貸していただけませんでしょうか. 記事1~3,それぞれのランクA~Eを選んだ後,BestとWorstを決定するものです. 今の状態だとCSVには,「name=○」の順番でいうと↓このように並びます. 記事10-1 11Best 12Worst 記事10-2 記事10-3 11-1 11-2 12-1 12-2 これを↓このように並んでCSVに落としたいのです. 記事10-1 記事10-2 記事10-3 11Best 11-1 11-2 12Worst 12-1 12-2 <table> <tr><td colspan="3" valign="top">記事1</td></tr> <tr> <td valign="top"> <label for='1_1'>  <input type=radio name="記事10-1" value="a" id='1_1'>A</label> <label for='1_2'><input type=radio name="記事10-1" value="b" id='1_2'>B</label> <label for='1_3'><input type=radio name="記事10-1" value="c" id='1_3'>C</label> <label for='1_4'><input type=radio name="記事10-1" value="d" id='1_4'>D</label> <label for='1_5'><input type=radio name="記事10-1" value="e" id='1_5' checked>E</label> </td> <td align="center" valign="top"><input type=radio name="11Best" value="1"></td> <td align="center" valign="top"><input type=radio name="12Worst" value="1"></td> </tr> <tr><td colspan="3" valign="top">記事2</td></tr> <tr> <td valign="top"> <label for='2_1'>  <input type=radio name="記事10-2" value="a" id='1_1'>A</label> <label for='2_2'><input type=radio name="記事10-2" value="b" id='2_2'>B</label> <label for='2_3'><input type=radio name="記事10-2" value="c" id='2_3'>C</label> <label for='2_4'><input type=radio name="記事10-2" value="d" id='2_4'>D</label> <label for='2_5'><input type=radio name="記事10-2" value="e" id='2_5' checked>E</label> </td> <td align="center" valign="top"><input type=radio name="11Best" value="2"></td> <td align="center" valign="top"><input type=radio name="12Worst" value="2"></td> </tr> <tr><td colspan="3" valign="top">記事3</td></tr> <tr> <td valign="top"> <label for='3_1'>  <input type=radio name="記事10-3" value="a" id='1_1'>A</label> <label for='3_2'><input type=radio name="記事10-3" value="b" id='3_2'>B</label> <label for='3_3'><input type=radio name="記事10-3" value="c" id='3_3'>C</label> <label for='3_4'><input type=radio name="記事10-3" value="d" id='3_4'>D</label> <label for='3_5'><input type=radio name="記事10-3" value="e" id='3_5' checked>E</label> </td> <td align="center" valign="top"><input type=radio name="11Best" value="3"></td> <td align="center" valign="top"><input type=radio name="12Worst" value="3"></td> </tr> </table> <table> <tr><td valign="top">[11-1]Bestについて1</td></tr> <tr><td valign="top"><input name="11-1" type="text" value="" title="Best" size="100"></td></tr> <tr><td valign="top">[11-2]Bestについて2</td></tr> <tr> <td valign="top"> <label for='11_2a'> <input type=radio name="11-2" value="a" id='11_2a'>BestA</label> <label for='11_2b'><input type=radio name="11-2" value="b" id='11_2b'>BestB</label> </td> </tr> <tr><td valign="top">[12-1]Worstについて1</td></tr> <tr><td valign="top"><input name="12-1" type="text" value="" title="Worst" size="100"></td></tr> <tr><td valign="top">[12-2]Worstについて2</td></tr> <tr> <td valign="top"> <label for='12_2a'> <input type=radio name="12-2" value="a" id='12_2a'>WorstA</label> <label for='12_2b'><input type=radio name="12-2" value="b" id='11_2b'>WorstB</label> </td> </tr> このHTML内なのか,cgi内なのか,どこでどのように設定したらよいでしょうか. 例えば,「name="11Best"」を「name="11-0"」にすればよいとか,そのくらいで並びが変わったり・・・しませんよね. 質問もつたなくうまくお伝えできるか分かりませんが,アドバイスいただけると大変助かります. なにとぞよろしくお願いいたします.

  • FORMメソッドでvalueがうまく渡されない

    Perlで下記のようにFORMメソッドを 色々なところで使っているのですが ↓のFORMメソッドだけVALUEが渡らないのです。 print "<FORM ACTION=\"$homeurl\" METHOD=$method>\n"; print "<TABLE BORDER=1>\n"; print "<TR>\n"; print "<TD>会員番号</TD>\n"; print "<TD><TT>会員番号-</TT><INPUT type=text name=mytonum value=\"$mynum\"></TD>\n"; print "</TR>\n"; print "<TR>\n"; print "<TD COLSPAN=2>\n"; print "<INPUT TYPE=SUBMIT VALUE=\" 基本情報 \">\n"; print "<INPUT TYPE=hidden NAME=mynum VALUE=\"$c_mynum\">\n"; #非表示。クッキー用 print "<INPUT TYPE=HIDDEN NAME=mycmd VALUE=write2>\n"; print "</TD>\n"; print "</TR>\n"; print "</TABLE>\n"; print "</FORM>\n"; それで改変したのが↓です。 こちらはボタンを押したらちゃんと値が渡りました。 ただ、予定した位置にテキストボックスが表示されず別の位置に表示されそれも困っています。 上の表記はどこが間違っているのでしょうか? print "<FORM ACTION=\"$homeurl\" METHOD=$method>\n"; print "<TABLE BORDER=1>\n"; print "<TR>\n"; print "<TD>編集先の会員番号</TD>\n"; # print "<TD><TT>会員番号-</TT><INPUT type=text name=mytonum value=\"$mynum\"></TD>\n"; #コメントにして・・・ print "</TR>\n"; print "<TR>\n"; print "<TD COLSPAN=2>\n"; print "<INPUT TYPE=SUBMIT VALUE=\" 基本情報 \">\n"; print "<INPUT TYPE=text NAME=mynum VALUE=\"$mynum\">\n"; #こちらtypeを変更→OK ~~以下上記同じ~~

  • IEでFORMタグを入れると空白ができる

    IEだけなのですがFORMタグを入れるとTABLEとTABLEの間に空白ができます。 自分なりに切り分けをしたみたところ下記のような結果になりました。 1、XHTML1.0をHTML4.0に変更すると正常に表示 2、Firefoxで開くと正常に表示 3、FORMタグを外すと正常に表示 4、このhtmlファイルをローカル(自身のPC上)で表示すると正常に表示 (Webサーバにアップロードすると現象が現れる) ソースは以下の通りです <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <table border="0" width="800"><tr> <td><font color="#000080"><b>サブメニュー</b></font></td> <td width="20"></td> <td align="right"> <input type="button" value="戻る" onclick=window.open("http://www.xxxx.xxx/xxx.html","_top")> </td></tr></table> ※この間に空白ができます※ <table border="1" cellspacing="0" cellpadding="5" width="800"> <tr><th nowrap class="l" width="270">商品A</th> <th nowrap class="l" width="100">商品A</th> <th nowrap class="l" width="270">商品名B</th> <th nowrap class="l" width="100">商品B</th> <p></tr> <tr> <form action="./xxx.cgi" method="post" style="margin:0px"> <input type="hidden" name="view" value="0"> <input type="hidden" name="pick" value="0"> <input type="hidden" name="back" value=""> <td valign="top" width="270">あ</td> <td nowrap align="center" valign="top" width="100">あ</td></form> <form action="./xxx.cgi" method="post" style="margin:0px"> <input type="hidden" name="view" value="0"> <input type="hidden" name="pick" value="0"> <input type="hidden" name="back" value=""> <td valign="top" width="270">あ</td> <td nowrap align="center" valign="top" width="100">あ</td></form> </tr> <tr> <form action="./xxx.cgi" method="post" style="margin:0px"> <input type="hidden" name="view" value="0"> <input type="hidden" name="pick" value="0"> <input type="hidden" name="back" value=""> <td valign="top" width="270">あ</td> <td nowrap align="center" valign="top" width="100">あ</td></form> <form action="./xxx.cgi" method="post" style="margin:0px"> <input type="hidden" name="view" value="0"> <input type="hidden" name="pick" value="0"> <input type="hidden" name="back" value=""> <td valign="top" width="270">あ</td> <td nowrap align="center" valign="top" width="100">あ</td></form> </tr> </table> </p> </html> 実際にはもっと長い表になるのですが<tr></tr>を増やせば増やすほど空白が大きくなります。 どうすれば解消できるでしょうか ご存知の方がいらっしゃいましたらご教授願います。 いろいろなサイトを拝見して試してみましたが解決できないのでよろしくお願いします。

    • ベストアンサー
    • HTML
  • Yes/No型を使ってアップロード

    はじめまして。 下記にhtmlを書かせていただいてますが、このhtmlの『アップロード』のボタンを押すと 1. データベース『mdb』のYes/No型にチェックが入る 2. Yes/No型にチェックが入ったものはアップロードされる ようにすることはできるでしょうか?また、何か参考になるサイト様などがあれば 教えていただきたいのです。 おわかりになる方、よろしくお願いします。 下記のような↓フォームです。 ---------------------- <table> <TR> <TD> <INPUT type='hidden' NAME='UPDATE_ID' VALUE='1'> <center><INPUT TYPE='submit' VALUE=' アップロード '><br><center> <p></p> </TD> <TD>登録ファイル1</TD></FORM> <FORM ACTION='' METHOD='POST'> <TR> <TD> <INPUT type='hidden' NAME='UPDATE_ID' VALUE='2'> <center><INPUT TYPE='submit' VALUE=' アップロード '><br><center> <p></p> </TD> <TD>登録ファイル2</TD></FORM> <FORM ACTION='' METHOD='POST'> <INPUT type='hidden' NAME='UPDATE_ID' VALUE='3'> <TR> <TR> </FORM> <TR> </table>

専門家に質問してみよう