• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイル(PDF・エクセル・ワード)のアップロード、ダウンロード機能の作成)

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

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

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

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