• ベストアンサー

画像のアップロード機能

過去の質問に画像のアップロード機能の付け方が載ってたので、色々調べてみたのですが・・・ なぜかうまく動作しません。エラーがでてしまいます。 過去の質問では <FORM action="xxxx.cgi" method="post" enctype="multipart/form-data"> <INPUT type="file" name="gazo"> <INPUT type="submit"> </FORM> とあり、これでアップロードさせるためのフォームを作成するのでしょうが、実際追記してみると、エラーがでてしまいました。 そこで、ぜひ画像のアップロード機能の解説をお願いしたいのです。 解説ページを探したのですが、見つかりませんでした・・・ どなたか、レスお願いします

  • Perl
  • 回答数3
  • ありがとう数6

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

  • ベストアンサー
  • yuizuian
  • ベストアンサー率42% (103/245)
回答No.1

タグを書くだけではファイルのアップロードはできません。 それを受け取って処理し、保存するプログラムがなくては… おそらくエラーはそのプログラムの方にあるのではないですか? タグを書いただけでエラーというのは print "<FORM action="~>"; という感じで""内に"がある等の場合だと思います。 一度画像をアップロードできるフリーの掲示板等をダウンロードして、動きを確認されてはどうですか? そういう掲示板を配布しているサイトをご紹介しますね。

参考URL:
http://www.kent-web.com/
blackcat3
質問者

補足

yuizuianさん、レスありがとうございます 参考URLからアップロード付掲示板をダウンロードして解析しましたが・・・ 理解できません(T-T) とにかく、それらしい所をコピーして貼り付けてみましたが・・・どうもうまくいかないみたいです 参考にした掲示板の473行目&UpFileの中身がさっぱり理解できないです たぶん、最初の方でファイルの拡張子の設定(?)をして、527行目の $upfile = $in{'upfile'}; でファイル名を設定。537行目の書き込み作業で終了・・・ これだけでは駄目なのでしょうか? それと、この書き込みはサーバーにアップロードするという意味でしょうか? ログファイルに書き込んでいるようには思えませんが・・・ 解析できない程度の知識では、やはりあきらめろってことですか(T-T)

その他の回答 (2)

  • shorn
  • ベストアンサー率41% (12/29)
回答No.3

>解析できない程度の知識では、やはりあきらめろってことですか(T-T) 配布されているのはプログラムがわからなくても利用できるものではないでしょうか。 blackcat3さんがどのようなものを使用してどのくらいの部分でどのようなエラーがでているのかがまったく伝わってきません。 それで答えを求められても・・・・といったところです。 まず、xxxx.cgiは自分で作ったものなのか、公開されていて実行の実績を持っているものなのか。 ここの説明ではなく公開されているページどおりに使用しているのか。 そしてどこでどのようなエラーが発生しているのか。 サーバーにデータが送られてからのエラーなのか送る前にエラーが発生しているのか。 ちなみに幾つかのエラー原因をあげてみます。 1.cgiがファイル読込みに対応していない。 (multipart/form-dataに対応していない。) 2.multipart/form-data以外も送っていて矛盾が発生している。 3.指定したURLにcgiが存在しない。 4.ローカルサーバーを立ち上げずにローカルエリアで行っている。 5.保存指定エリアのフォルダの権限が読込みのみで書き込み権限が与えられていない。 6.画像保存の以前にプログラムがエラーを発生している。 7.cgiが動作しない環境下である。 8.読み込んだファイルを保存しようとするアドレスが見つからない。 9.プログラムのほうで読み込めるバイトサイズが指定されていてそれを超えるデータを送ろうとしている。 10.cgiに書き込み権限を与えていない。 11.拡張子が排他的設定になっている。 ・ ・ ・ ・ ・ 考えられる原因というのはそれこそ星の数ほどあります。 基本的に ブラウザ html パーミッション cgi の4種類でエラーが発生します。 >とにかく、それらしい所をコピーして貼り付けてみましたが・・・どうもうまくいかないみたいです 自作プログラムに貼り付けたとするならそれは無茶です。 変数などいろいろなところで誤動作を起こしているのではないでしょうか? まずはともかく配布されているものをそのまま使用してみることをお勧めします。 それでうまくいけば問題がcgiに絞れます。 >解説ページを探したのですが、見つかりませんでした・・・ 突拍子もなく部分部分で見るのではなくまずは基本的なところから学んでいったほうが良いのでは? そうでなければ説明されたって理解できないと思いますよ。 ついでに、他の良回答を得ている方がどのような質問をしているのか見てください。 質問の仕方によって求められる回答というものは天と地ほどに変わってきます。

blackcat3
質問者

お礼

説明不足ですね 申し訳ありませんでした>< とりあえず、もう少しレベルアップしてから再挑戦してみたいと思います ありがとうございました^^

  • yuizuian
  • ベストアンサー率42% (103/245)
回答No.2

どのスクリプトをDLされたかも解らないので何行目…といわれても「?」なのですが… >とにかく、それらしい所をコピーして貼り付けてみましたが・・・どうもうまくいかないみたいです そこだけで動いているのではないので、できないのは当たり前です。 &ReadParse;←これは結構ポイントかも?cgi-libについてはご存知ですか? >たぶん、最初の方でファイルの拡張子の設定(?)をして、527行目の >$upfile = $in{'upfile'}; >でファイル名を設定。537行目の書き込み作業で終了・・・ 大雑把に言うと、 ファイルの形式を解析すると同時に、Macからのアップロードであるかを判定 (Macからのアップは不要なバイナリコードが付加されていますから…) その後画像を保存…という感じです。 >それと、この書き込みはサーバーにアップロードするという意味でしょうか? >ログファイルに書き込んでいるようには思えませんが・・・ そうですね。 open関数はご存知ですよね? open(OUT,"> $ImgFile")はファイルが存在しなければ新規作成を試みますよね。 つまり$ImgFileに格納されているファイル名のファイルを作成し、 その中にファイルのデータを書き込んでいるんです。 (もちろん画像を格納するディレクトリに書き込み権限がなくてはいけません) もしどうしても解析しきれない、作れないというのであれば、その掲示板を改造して使用するのも手だと思いますよ。

blackcat3
質問者

補足

確かに、スクリプト名もなにも言ってませんでした すみません(^^; とりあえず現段階の私の知識では無理ということがわかりました ただコピーしただけで動くわけありませんしね もう少し独自に勉強してから再挑戦してみようと思います 本当にありがとうございました^^

関連するQ&A

  • アップロードされてきた画像ファイル

    フォームからアップロードされてきた画像ファイルを、適当なファイル名を付けてJPGあるいはGIFの拡張子で保存し、HTMLファイルで保存した画像を一覧表示させようというCGIスクリプトを作りたいと考えています。 <FORM action="xxxx.cgi" method="post" enctype="multipart/form-data"> <INPUT type="file" name="gazo"> <INPUT type="submit"> </FORM> とこんな具合のフォームから画像ファイル(JPGやGIF)をアップロードした時、 受け手のxxxx.cgiでは、この画像ファイルのデータをどのように受けたらよいのでしょうか? cgi-lib.plを読み込んで、$in{'gazo'} というような形で画像ファイルのデータを受け取ればよいのでしょうか?

    • ベストアンサー
    • CGI
  • フォームからアップロードされた画像ファイルの処理

    フォームからアップロードされてきた画像ファイルを、適当なファイル名を付けてJPGあるいはGIFの拡張子で保存し、HTMLファイルで保存した画像を一覧表示させようというCGIスクリプトを作りたいと考えています。 質問1 <FORM action="xxxx.cgi" method="post" enctype="multipart/form-data"> <INPUT type="file" name="gazo"> <INPUT type="submit"> </FORM> とこんな具合のフォームから画像ファイル(JPGやGIF)をアップロードした時、 受け手のxxxx.cgiでは、この画像ファイルのデータをどのように受けたらよいのでしょうか? read(STDIN,$_,$ENV{'CONTENT_LENGTH'});としたり、 あるいは cgi-lib.plを読み込んで、$in{'gazo'} というような形で画像ファイルのデータを受け取ればよいのでしょうか? 質問2 画像ファイルを受け取ったとして、フォームから送られてきた画像ファイルがJPGなのかGIFなのかを判別することは可能でしょうか? 可能ならば、判別するためのスクリプトはどんなものが考えられるでしょうか? (フォームから送られてくる画像ファイルのデータの何をチェックすれば、JPGかGIFかを判別できるのでしょうか?) もしご回答頂ける方がおられればご教授ください。よろしくお願いします。 なお、「既存のスクリプトを利用しなさい」というような回答やアドバイスならば不要でございます。

    • ベストアンサー
    • Perl
  • docomoでの画像アップロードについてです。

    docomoでの画像アップロードについてです。 PCと同じ、fileタグを使用し、携帯で画像をアップロードしたいのですが、 画像アップロードできる画像と出来ない画像があります。 (絵文字画像ならできるが、写メデータだとできない) アップロード出来ない場合、$_FILES及び$_POSTのデータが渡りません。 因みに同じHTML及びPHPのソースでsoftbankだと出来ました。 容量の問題かと思い、 ini_set("upload_max_filesize","2M"); ini_set("post_max_size","3M"); ini_set('max_input_time',"600"); ini_set('max_execution_time',"600"); なども設定しましたが、変わらないです。 どなたかヒントでも頂ければと思います。 宜しくお願いします。 因みにHTMLのソースは下記です。 <form action="スクリプトURL" method="POST" enctype="multipart/form-data"> <input name="MAX_FILE_SIZE" type="hidden" value="1000000"> <input type="FILE" name="photo"> <INPUT type="submit" name="conf" value="アップロード"> </form>

    • 締切済み
    • PHP
  • 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
  • アップロードの方法

    ファイルの保存方法を教えてください。 アップロードファイル名は取得できましたが、ファイルの保存法が分からないので教えてください。 PHPは知っています。 PHPのようにテンポラリファイルに保存されるからテンポラリのパスを取得するのでしょうか? ASPの場合だと方法がさっぱり分かりませんでした。 <form enctype="multipart/form-data" action="a.asp" method="POST"> <input name="my_file" type="file" size="20"></td> <input type="Submit"> </form>

  • 候補画像から選択して画像をアップロード

    通常、画像のアップロードは <form action="upload.php" method="post" enctype="multipart/form-data"> <p> 画像をアップロードする<br> <input type="file" name="pic"> </p> <p> <input type="hidden" name="code" value="<?php echo $code ?>"> <input type="submit" name="submit" value="アップロード"> </p> </form> というフォームを使っています。 ↓ ★画像アップロードフォーム http://pips.chu.jp/0/up/upload.php これで、「参照」を押すと、ローカルのフォルダから画像を選べますが、 あらかじめ作成した画像の候補の中から1つ選んでアップロードするにはどうすればよいでしょうか。 画像の候補は、「img」というフォルダを作り、その中に格納しています。 ↓ ★候補画像 http://pips.chu.jp/0/up/img/sample1.jpg http://pips.chu.jp/0/up/img/sample2.jpg http://pips.chu.jp/0/up/img/sample3.jpg 「参照」のボタンを押すと、「img」フォルダに行く方法が知りたいです。 また、ラジオボタンやセレクトボタンを使った方法があれば教えて頂けないでしょうか。 何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • 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
  • 初心者ですみません。画像ファイルのアップロードについて

    任意の画像ファイルをHTMLフォームで入力して 登録確認画面に渡した後、ファイルをアップロード したいのですが上手くいきません。 ・フォーム入力ページ <FORM action="登録確認ページ.php" method="POST" enctype="multipart/form-data"> <INPUT type="file" name="uploadfile" size="50"> <INPUT type="submit" name="reg" value="OK"> ↓ ・登録確認ページ $uploadfile = $_FILES['uploadfile']; move_uploaded_file($uploadfile, "$PHOTOTMP$imagefile"); $body .= "<IMG src='$PHOTOTMP$imagefile' width='240' height='180'>"; として、登録確認ページでアップロードする 画像ファイルをいったん表示させてから 最終的にアップロードさせたいのですが 「×」マークが出て画像が表示されません。 データの受け渡しが上手くできていないのでしょうか。 どなたか教えて下さい。よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP 画像アップロード 重複防止

    画像、ファイルをアップロードできるフォームを作成しています。 ---------------------- フォーム <FORM NAME="objform" action="yes.php" METHOD="POST" ENCTYPE="multipart/form-data"> <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="1000000"> <INPUT TYPE="file" NAME="img1" SIZE="40"><BR> <INPUT TYPE="submit" NAME="submit" VALUE="アップロードする!!"> </FORM> ーーーーーーーーーーーーーーーーーーーー yes.phpの中身 $updir = "./photo/"; $filename = $_FILES['upfile']['name']; //form の「upfile」の値 move_uploaded_file($_FILES['upfile']['tmp_name'], $updir.$filename); -------------------------- これでphoto のフォルダに格納されるようにしているのですが、 もし、同じファイル名でアップされた場合上書きされてしまいます。 IDをつけるか、もしくはその他の方法でファイル名が重複されないような設定にするにはどうすればよいでしょうか。 現在PHP勉強中です。 初歩的なことかもしれませんが、 よくわからないのでアドバイスを頂けると助かります。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • WEBサイトからファイルマネージャへ直接画像をアップロードするには

    はじめまして。 自分のサイトのページからファイル参照をし、 [<FORM method="POST" enctype="multipart/form-data" action="img_upload.php"> <INPUT type="hidden" name="MAX_FILE_SIZE" value="65536"> 画像のファイル名を入力してください(最大64KByte) <INPUT size="30" type="file" name="upfile"><BR> <BR> <INPUT type="submit" name="submit" value="送信"> <INPUT type="reset" name="reset" value="リセット"> </FORM>] 自分の借りているレンタルサーバにあるファイルマネージャへ直接画像をアップし、 違うページで表示させたいのですが可能でしょうか。 サンプルソースや参考になるサイトを教えていただけるとありがたいです。 どうかよろしくお願いいたします。

専門家に質問してみよう