ファイルのアップロード・ダウンロード機能の作成方法

このQ&Aのポイント
  • ホームページの改良において、ファイル(PDF・エクセル・ワード)のダウンロード機能を追加する必要があります。また、管理者がファイルの追加・削除を行えるようにするためには、レンタルサーバーでデータベースの構築ができない場合は、ファイルのパスをテキストに保存し、HTMLで表示した際にリンクを実現する方法を検討する必要があります。
  • ダウンロード機能を実現するためには、PerlとPHPの両方で手段があるが、一般的にはPHPがよく使われる。場合によっては、現在CGIで動いている部分をPHPに変更することも検討すべき。
  • ホームページ作成は初めてで経験者がいないため、理解しきれていない部分もあるが、質問内容を理解してサポートしてほしい。
回答を見る
  • ベストアンサー

ファイル(PDF・エクセル・ワード)のアップロード、ダウンロード機能の作成

Perl/CGI初心者です。 仕事でホームページの改良をする事になりました。 現状は、そのホームページでは掲示板、アクセスカウンタ等をCGIで組んでいます。 今回、ファイル(PDF・エクセル・ワード)のダウンロードの機能を追加することになり、 さらにダウンロードするファイルを管理者が追加・削除できるようにしたいとの要望です。 サーバーはレンタルサーバーで現在の契約プランではデータベースは構築できません。 なので、画面から入力した対象ファイルのパスをテキストに保存し、 それをHTMLで表示した時にリンクできるようにできないかと考えています。 ファイルのダウンロード機能についてはPerlでもいくつか手段があるというところまで調べたのですが、 一般的にはダウンロード機能はPerlとPHPのどちらで作成するのが理想なのでしょうか? 場合によっては現在CGIで動いている部分をPHPで作り変える事も検討するつもりです。 ホームページ作成は初めてで周囲にも経験者が居ません。 基本的な事が、まだ理解出来ていない部分もありますので、 質問内容が意味不明かもしれませんが、お力添えお願いします。

  • Perl
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • nerumako
  • ベストアンサー率84% (11/13)
回答No.2

readdir でリスティングさせてご要望のような形にするとしたら 例えば配列@listに全ファイル名を代入 @listをforeachで回して下のようにprintを繰り返す -----------------------------------------------   ファイル名1       | □ ←ファイルアイコン(クリックでダイアログ表示) ファイルアイコンのリンク先はエクセルをダウンロードさせる為のCGIです。同じCGIでサブルーチンを用意すれば良いと思います。 GETでファイル名を渡せばOKですね。 エクセルをダウンロードさせる為のサブルーチンは下のような形でしょうか。 sub dlwork { # ファイルのパスとダウンロードする時のファイル名を引数から受け取る my$filepath = shift @_; my$filename = shift @_; # 確認ダイヤログ表示用にHTTPヘッダ送信 print qq|Content-type: application/vnd.ms-excel\n|; print qq|Content-Disposition: attachment; filename="ファイル名"\n|; print qq|\n|; # 該当ファイルを一度読み込んで出力 open(FILE,"$filepath"); while(<FILE>){ print; } close(FILE); } エクセル以外の時はそのファイルに合わせたヘッダーの条件分岐が必要ですね。 htaccessでヘッダー指定ができたら良いのですが、IEだとhtaccessのヘッダー出力を無視するんですね。 マルチパートでのアップロードに関しては参考URLがものすごい解り易いです。 解らない所があったらご自分の言葉で構いませんので出来るだけ具体的にご質問下さい。

参考URL:
http://www.ss.iij4u.or.jp/~somali/web/_perl_upload.html
chokotip
質問者

お礼

細かいアドバイス本当にありがとうございます。 ファイルのダウンロード・アップロードに関しては、なんとなくどうすれば良いのか解ってきました。 ですが、まだ完全に理解できるレベルまで達していない様なので、アドバイスを基にもう少し勉強してみます。 また、つまづいたら質問させて頂きたいと思います。 ありがとうございます。

その他の回答 (1)

  • nerumako
  • ベストアンサー率84% (11/13)
回答No.1

まず、どこまでの作りこみをご検討か解りませんが、(SQL?)データベースの事でお悩みの部分はファイル管理では不十分でしょうか? それとファイルのダウンロード機能?についてはエクセルなどのファイルをブラウザで表示してしまうのではなく、ダウンロードの確認ダイアログを出したいと言った旨でしょうか。 もし上記のようでしたらperlとphpで悩んでおられる部分は現在のスクリプトを書き換えるまでの大差はないです。 例えばファイル名などのリンクをクリックするとダウンロードダイアログが出現されるようにしたいとしたらエクセルであればヘッダー出力を以下のようにするだけです。 Content-type: application/vnd.ms-excel\n Content-Disposition: attachment; filename="$filename"\n ダウンロードさせる際、エクセルファイルを変数に読み込ませる部分がperlとphpでは1、2行程度違うだけです。 >画面から入力した対象ファイルのパスをテキストに保存し、 それをHTMLで表示した時にリンクできるようにできないかと考えています ファイルのリスティングの事でしょうか。 ファイルのパス、ファイル名が欲しいだけでしたら保存されるファイルを一つのディレクトリにまとめてしまって readdir でファイル名の一覧を取得して表示させてしまえば余計な書き込みもなく済む気がしますが如何でしょう。 ダウンロードするファイルを管理者が追加・削除できるように との事ですのでブラウザ上でそれを行うとしたら削除に関してはリスティング表示したファイルから選ばせてunlink(); 追加はローカルPCからwebサーバーへのフォームを使ってマルチパートでアップロード。 上記のような形ではどうでしょうか?全然主旨が違ったら申し訳ありません。

chokotip
質問者

補足

詳しいご回答ありがとうございます。 >まず、どこまでの作りこみをご検討か解りませんが、(SQL?)データベースの事でお悩みの部分はファイル管理では不十分でしょうか? こちら側の説明不足でした。 現行のものはそのようにしています。できたら、同じように作りこみたいと考えています。 >それとファイルのダウンロード機能?についてはエクセルなどのファイルをブラウザで表示してしまうのではなく、ダウンロードの確認ダイアログを出したいと言った旨でしょうか。 やりたい事はご察しの通り、ダウンロードの確認ダイアログを表示させたい事です。 実現にはperlでもphpでも処理に大差は無いという事なのですね。 perlでやりたいと思います。 >ファイルのリスティングの事でしょうか。 >ファイルのパス、ファイル名が欲しいだけでしたら保存されるファイルを一つのディレクトリにまとめてしまって >readdir でファイル名の一覧を取得して表示させてしまえば余計な書き込みもなく済む気がしますが如何でしょう。 これもこちらの説明不足のような気がします。 具体的には -----------------------------------------------   ファイル名1       | □ ←ファイルアイコン(クリックでダイアログ表示) -----------------------------------------------   ファイル名2       | □ -----------------------------------------------      ・      ・      ・ というような他サイトでも良く見かけるような感じにしたいのですが、アドバイス内容のような方法でも実現可能でしょうか? >追加はローカルPCからwebサーバーへのフォームを使ってマルチパートでアップロード。 すみません。調べてみましたが、内容がいまいち理解できません。 マルチパートでアップロードとは具体的にどういう事なのでしょうか? 申し訳ありませんが、ご教示願います。

関連するQ&A

  • PDFファイルを作成したい

    CGI(Perl)でデータを抽出したり作成したりし、その結果出てきたものをPDFファイルでレイアウトし、プリントアウトできるようにしたいのですが、どうすればいいのでしょうか。 色々調べておりましたらPFDJというファイル?(モジュール?)に行き着いたのですが、サンプルを見ていたらとても手に負えそうもなかったのでもう少し簡単に作成する方法がないか模索しています。 レンタルサーバー上でcgiを動かしますので、勝手にソフトの追加ができませんし、また自宅PCなどにインストールするタイプのソフトでは対応できません。 ですのでソフトのインストールなどをせずにできる方法がありましたら教えてください。 よろしくお願いします。

  • ファイルのダウンロード

    小生それ程Perlに精通しておりませんので、あんまり難しいコードは理解できません。この間、ひーひー言いながら、このサイトのお力も借り、HTMLフォームからデータエントリするとWebサーバー上のテキストファイルでのデータベースに追加されていくシステムを作ることができました。そこでWebサーバー上にある、テキストファイルをローカルコンピュータにダウンロードするPerlのプログラムコードを知りたいのです。 お力添え宜しくお願いします。

    • ベストアンサー
    • Perl
  • ファイルのアップロードとダウンロードができるphp

    ホームページで訪問者が自分のファイルをアップロード・ダウンロードできるPHPファイルを作りたいです。 アップロード・ダウンロード時にパスワードを設定し、その人物だけしかダウンロードできないようにしたいです。 サーバは自宅なので容量・回線も大丈夫です。

    • 締切済み
    • PHP
  • CSVファイルのダウンロード

    よろしくお願いします。 現在、ボタンを押すと(=CGI実行)フィルターによりCSVファイルが作成されるという様なものを開発しております。 しかし、その出来上がったCSVファイルをそのままダウンロードしたいと言う要望がありまして、そのCGIに組み込めないものかといろいろ調べております。 概要 (1)ボタンを押す(=CGI実行) (2)フィルターによりCSVファイル作成 (3)作成されたファイルをダウンロード という具合で、教えていただきたいのは(3)です((1)(2)は作成済み)。 実際にはCSVファイルは3つできるのですが、これらをまとめてダウンロード・・・というのはムリですよねぇ(第1希望)。 ムリなら、処理の中で圧縮させます(これぐらいはできます)ので、そのファイルをダウンロードさせるというやり方でも構いません(第2希望)。 実現が難しいようであれば実行結果画面に<a href= ~>で貼り付けます。 webサーバー・・・HP-UX web・・・IE CGI開発言語・・・Perl 開発端末・・・windows2000(Tera Term 使用) 以上、情報等お持ちの方いらっしゃいましたら、 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • ファイルのダウンロード処理について

    ブラウザ上から画像ファイルをアップロードするシステムをPHPで作成しました。 このシステムにダウンロード機能を追加する事になり、現在、PHPでダウンロードするにはどのようにすればいいのかをネット等で調べています。 大きいファイルだとダウンロードできない等の障害発生するみたいな記事を目にしました。 サンプルコードも一緒に掲載されていましたが、統一されていない為、戸惑っています。 ※今回、数百MBのファイルがダウンロードできるような… そこで皆さんのお知恵をお借りできないかと思い、投稿させていただきました。 どうか、ご教授をお願いします。 些細な事でも構いませんで宜しくお願いします。

    • ベストアンサー
    • PHP
  • IISのExeファイルダウンロード

    以下の環境を実装する方法を教えてください。 1.PHPが動作する。 2.リンクしたExeファイルがダウンロードできる。 現在の環境 ・WindowsServer2008r2 ・IIS7.5 ・IISの機能の追加にて「CGI」を追加済み ・WindowsPIにて「PHP7.0.21」をインストール済み ・現在Exeファイルのリンクをクリックすると添付したエラー画面が表示されます。 その他、情報が必要であれば、教えてください。 お手数ですが宜しくお願い致します。

  • HPからファイルをダウンロードできるようにしたい @cpi

    HPからファイルをダウンロードできるようにしたく、アドバイスをお願いします。  Downloadさせたいファイル:abc.PDF  HP設置場所      :レンタルサーバー cpi(供用サーバー)   http://www.cpi.ad.jp/   ローカルPC上では、HTMLに  <a href="abc.pdf"><img src="def.gif">ダ</a> を追加することでちゃんと動作しました。 クリックしてpdfが起動します。 保存も可能です。 対象ファイルも含めて、cpiにアップロードして確認してみると、 画像ファイルは表示されるものの、クリックすると、  Not Found  The requested URL /saiyo.pdf was not found on this server. と出て、ファイルをダウンロードできません。 セキュリティ上、ファイルをダウンロードができないのかなぁと思います。 そうすると、PHPという機能を使うのでしょうか? (さっぱりわからないで発言しています) ホスティング先のCPIでは、■PHP 4.4.7とPHP 5.2.4に対応しています。 それともPerlというのを使うのでしょうか。■Perl 5.8.8 に対応しています。 こんな状態なのですが、何かアドバイスや、説明が載っているHPを教えていただけないでしょうか。 よろしくお願いします。  

  • perl cgi 「ファイルをダウンロード」

    perl cgiを作っています。 ファイル(例えば.csv)をperl側で作って、 ユーザがローカルコンピュータのこのみの場所(あるいはwindowsなら「ダウンロード」に固定でも可)にダウンロードできるようにしたいのですが、ダウンロードさせる部分をどうコーディングすればよろしいでしょうか?

    • ベストアンサー
    • CGI
  • PDFファイルのダウンロード方法

    ホームページからPDFファイルをダウンロードできるようにしたいのですが、できますか? 操作方法教えてくれませんか? サーバーにアップしたホームページのファイルと一緒にPDFのファイルもアップしてみましたが開きませんでした・・・これはダウンロードではなくURLで開こうとしているから操作間違えか・・・・・ 誰か教えてくださ~い

  • アップロード・ダウンロードするサイト作成について

    サーバを使って、ファイルをアップロード・ダウンロードするサイトを作成したいと思ってるのですが、初心者なので、どうやって作成したらいいか分かりません。 少しなら、html分かります。 参考になるサイトなどを教えてください。 宜しくお願いします。