• ベストアンサー

画像のアップロード機能

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

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

  • ベストアンサー
  • 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