• ベストアンサー

ファイルのアップロード

ファイルをアップロードするCGI等をよく見かけるのですが、 あれはどのようにして実現してるのでしょうか?

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

  • ベストアンサー
  • W_H
  • ベストアンサー率47% (21/44)
回答No.2

楽なのは、CGIというモジュールを使ってやる方法です。恐らく標準で入ってるはずです。普通にサーバーに設置しても使えました。 ここでは、 <form action="CGIアドレス" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="アップロード"> </form> というHTMLタグでデータを送った場合を仮定します。 ちなみに、formタグの、[enctype="multipart/form-data]がないと、正常に動きません。これはどのスクリプトにおいても必須の条件のはずです。 use CGI;#CGIモジュールの使用 $query = new CGI; $file =$query->param('file');#デコード。勝手にしてくれます。 #$変数 = $query->param(フォームの名前);が基本ルールです。 $newfile=$file;#ファイル名。別に$fileを使う必要なし open(FILE, ">$newfile") || die "error"; binmode(FILE);#アスキー以外のバイナリデータの場合必要 binmode(STDOUT);#アスキー以外のバイナリデータの場合必要 while (<$file>) {print FILE $_;} close(FILE); これが一番手軽かと。デコードも完璧にモジュールがしてくれます。 ただ、テキストファイルは正常にできない場合もあります。テキストの場合は、ファイルをバイナリモードで開く、binmodeの二行を削除すればいけます。(逆に画像などはこれが必須です。) ちなみに、自分のパソコンの仮想サーバーで実行すると、CGI何ちゃら~っというアップロードしたファイルと同じものが、どこかに作成されますが、それは一時ファイルですので、削除すればいいと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • 10940
  • ベストアンサー率21% (41/187)
回答No.1

そういうときは 「Perl CGI ファイル アップロード」 というキーワードで検索するとよいですよ。 ここの回答にまとめられるほど簡単な話じゃないですし、よくまとまったサイトはたくさんありますのでそちらを参考にしてください。

uhyo-901
質問者

補足

ありがとうございます。 とりあえずYahoo,google等で検索してみると、 コード等を載せているサイトは結構ありましたが、 どれも動かなかったり正常に動作しなかったりして 有力な情報が手に入らない状態です。 解説しているサイトなどあれば紹介して頂きたいです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ファイルをアップロードするプログラム

    自分のWEBサイトにおきたいのですが、無料でファイルをアップロードする CGIなどのプログラムはありませんか? イメージとしては、よくある形式ですが、参照をクリックして、 ファイルを選択して、アップロードする奴です。 アップロードするファイルは、テキストなどもあるので、 アップロードしたファイルをクリックすると、見れる形だとよいです。 また、掲示板のCGIではなく、別物がよいです。

    • 締切済み
    • CGI
  • ファイルアップロード時の経過表示

    ファイルアップロード時の経過表示 既に完成しているファイルアップロードのCGIを経過表示付きタイプに改造したいと考えています。 perlで作成、UNIXサーバで稼働しています。 アップロードしている間の経過表示は無理でしょうか? 一番簡単に実現する方法はどのようなものかアドバイス頂ければと思います。 なるべく改造は少なく済ませたいので、実現出来るなら有料のものでも構いません。 色々検索してみましたが、捜すことが出来ませんでした。 全面的に違うシステムに作り替えないと無理なものでしょうか?

    • ベストアンサー
    • Perl
  • ファイルのアップロードについて

    はじめまして。CGIにperlを使用して、ブラウザからファイルのアップロードを実現させようとしています。 binmode ( STDIN ); read ( STDIN, $tBUF, $BUFSZ) のようにして読み込み、バイナリーモードで書き出しています。 画像系はうまくいくのですが、テキスト系をアップロードするして、アップロードしたものをFTPソフトでASCKIIモードでダウンロードすると、どの文字コードの場合でも、一行ごとに余計な改行がひとつはいってしまいます。 バイナリーモードだとうまくいきます。 FTPソフト NextFTP2.02 使用OS:windows2000 workstation サーバーのOS:SunOS 5.8 ちなみみにサーバーがRedhat5.0のときはうまくいきました。 こういった原因はが、さっぱりわかりません。誰か教えてください。

    • ベストアンサー
    • CGI
  • ファイルのアップロード Perl5.8

    ファイルのアップロードでCGI::Liteを使っています。 PerlはActivePerlのバージョン5.8ですが アップロード先のデータの中身が変わってしまい、 画像データなのに別のファイルになって表示されなくなりました。 これはファイル自体の文字コード変換が絡んでいるということですか? また、CGIとCGI::Liteの違いですが、両方使ってもよいのでしょうか?

    • ベストアンサー
    • Perl
  • 簡単なファイルアップロード

    perl のスクリプトの勉強に、ファイルアップロードのごくごく簡単なスクリプトを探してます。 CGIの仕組みを理解するくらい簡単なのでいいので、よろしくお願いします。

    • ベストアンサー
    • Perl
  • ファイルのアップロード

    CGI初心者です。 http://nais.to/~yto/tools/ssupload/ NAIS.TOさんのサイトのファイルアップロードのソースを実際に試してみているのですが、 txtファイルやdatファイルはアップロード後開くことができるのですが、 pdfやxlsファイルは『ファイルが壊れています』と言われ、 フォルダに保存はされているのですが、開くことはできません。 html画面では文字コードがs-jisなのに cgiになるとISOになるのが原因だったりしますでしょうか。 ご回答宜しくお願いいたします。 環境 IE6 APACHE HTTP SERVER 2.0.58 ActivePerl 5.8.8

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

    セキュリティー上、FTPでアップロードできないのですが、HTTPでファイルをアップロードできるソフトはありますでしょうか? WWWサーバには、CGIやSSIはなく、JavaServletが動く環境ですが、できれば環境依存しないJavaアプレットが理想です。 又、クライアントにソフトウェアを入れエクスプローラ感覚で複数のファイルを簡単にHTTPでアップロードできるソフトがあったら知りたいです。

  • cgiでファイルをアップロードし、メールに添付したい。

    ファイルをアップロードし、sendmailで添付ファイルとして送信したいと思い、サイトを回っているのですが、いまいちファイルアップロードについてわかりません。 確認画面を表示させるため、ファイルを一時的にサーバに保持させるため、アップロードのやり方を調べていたのですが・・・さっぱりよくわからなく・・・。 cgi-lib、CGI.pmを使えば、アップロードができると知ったのですが、詳しく書かれているところが見つからずちんぷんかんぷんで困っています。 もし、詳しい事を書いているサイトなどがありましたら、教えていただけないでしょうか? 今のところ、cgi-libを使用してアップロードを考えています。 これってむずかしいのでしょうか???

    • 締切済み
    • CGI
  • ファイルアップロードの設置がうまくいきません。。

    ファイルアップロードの設置がうまくいきません。。 CGI-PLANTサイトのUPLOADERを設置しようとしているのですが、 http://wws.cside.com/cgi-plant/diary/uploader/ 詳細は、以下↓のreadmeに、とかかれてありますが、 cgiを同フォルダでアップする指定がどこかは書かれてありませんでした。。(探しても見つかりません;) http://wws.cside.com/cgi-plant/diary/uploader/readme.html サーバー指定のフォルダ(cgiをいれるフォルダ)には、cgiしか入れられないので、 それ以外のファイルを他においています。 その他のファイルを読み込む指定?(置かれている場所が移動になるので)、どこを修正すればいいでしょうか? 恐らくそれができていないせいで、Internal Server Errorがでて動かないと思うのです。。 ここのCGIは、あまり説明がないもので、、わかりづらいのですが、 管理機能のある、(閲覧のみ、アップロード権限あり、ファイルの削除権限あり、管理者、とわかれている) その機能+ファイル(Word、Excel)アップロードをしたいのです。 急いでいるので、他のソフトで、cgiのフォルダと別のフォルダで繋げる設定がわかるのがありましたら、 そちらを紹介していただきたいです;; どうかよろしくおねがいいたします。

    • ベストアンサー
    • CGI
  • ファイルのアップロードを簡単に行える画面を作りたい!

    ファイルのアップロードを簡単に行える画面を作りたい! いつもお世話になっております。 WEBシステムで、ファイルアップロードの機能について考えています。 今まではinputタグを使って、ファイルを1つずつアップロードする方法を 行っていました。 が、以前たまたま仕事で触る機会のあったシステムでは、 1.アップロード用画面が表示され、グリッドが表示されている。 2.複数のファイルをグリッドへドラッグ&ドロップする。   グリッドにファイルのパスが表示される。 3.「実行」ボタン押してアップロード完了。 というような素敵な機能がありました。 これと同じようなこと(つまり、複数のファイルをまとめてアップロードしたい) を実現したいのですがどのような手段で実現できるのかが見当がつきません。 (先ほどのシステムも、どの言語・仕組みで作られているのかまではわからないままです) 今のところ、システム自体はVB.NET、Java(+Struts)、PHPのどれかで 構築することを考えています。 アップロード機能の部分だけ、他の言語(およびアーキテクチャ)を利用しないと いけないのかも、という腹積もりも出来ております。 こんな言語(あるいはフレームワーク)で実現できるよ、というものがあれば、教えてください。 よろしくお願いします。