Perl/CGI初心者です。
仕事でホームページの改良をする事になりました。
現状は、そのホームページでは掲示板、アクセスカウンタ等をCGIで組んでいます。
今回、ファイル(PDF・エクセル・ワード)のダウンロードの機能を追加することになり、
さらにダウンロードするファイルを管理者が追加・削除できるようにしたいとの要望です。
サーバーはレンタルサーバーで現在の契約プランではデータベースは構築できません。
なので、画面から入力した対象ファイルのパスをテキストに保存し、
それをHTMLで表示した時にリンクできるようにできないかと考えています。
ファイルのダウンロード機能についてはPerlでもいくつか手段があるというところまで調べたのですが、
一般的にはダウンロード機能はPerlとPHPのどちらで作成するのが理想なのでしょうか?
場合によっては現在CGIで動いている部分をPHPで作り変える事も検討するつもりです。
ホームページ作成は初めてで周囲にも経験者が居ません。
基本的な事が、まだ理解出来ていない部分もありますので、
質問内容が意味不明かもしれませんが、お力添えお願いします。
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サーバーへのフォームを使ってマルチパートでアップロード。
上記のような形ではどうでしょうか?全然主旨が違ったら申し訳ありません。
この回答への補足
詳しいご回答ありがとうございます。
>まず、どこまでの作りこみをご検討か解りませんが、(SQL?)データベースの事でお悩みの部分はファイル管理では不十分でしょうか?
こちら側の説明不足でした。
現行のものはそのようにしています。できたら、同じように作りこみたいと考えています。
>それとファイルのダウンロード機能?についてはエクセルなどのファイルをブラウザで表示してしまうのではなく、ダウンロードの確認ダイアログを出したいと言った旨でしょうか。
やりたい事はご察しの通り、ダウンロードの確認ダイアログを表示させたい事です。
実現にはperlでもphpでも処理に大差は無いという事なのですね。
perlでやりたいと思います。
>ファイルのリスティングの事でしょうか。
>ファイルのパス、ファイル名が欲しいだけでしたら保存されるファイルを一つのディレクトリにまとめてしまって
>readdir でファイル名の一覧を取得して表示させてしまえば余計な書き込みもなく済む気がしますが如何でしょう。
これもこちらの説明不足のような気がします。
具体的には
-----------------------------------------------
ファイル名1 | □ ←ファイルアイコン(クリックでダイアログ表示)
-----------------------------------------------
ファイル名2 | □
-----------------------------------------------
・
・
・
というような他サイトでも良く見かけるような感じにしたいのですが、アドバイス内容のような方法でも実現可能でしょうか?
>追加はローカルPCからwebサーバーへのフォームを使ってマルチパートでアップロード。
すみません。調べてみましたが、内容がいまいち理解できません。
マルチパートでアップロードとは具体的にどういう事なのでしょうか?
申し訳ありませんが、ご教示願います。
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_uplo …
細かいアドバイス本当にありがとうございます。
ファイルのダウンロード・アップロードに関しては、なんとなくどうすれば良いのか解ってきました。
ですが、まだ完全に理解できるレベルまで達していない様なので、アドバイスを基にもう少し勉強してみます。
また、つまづいたら質問させて頂きたいと思います。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- ASP・SaaS イントラネットを構築したい 2 2022/04/24 11:08
- Android(アンドロイド) oppo Reno3AのクロームでダウンロードできないPDFがあります 1 2022/08/10 20:20
- その他(IT・Webサービス) WEBサイト内のファイルを探す方法は? 1 2022/11/11 16:38
- 電子書籍 ファイルピックについて 1 2022/08/07 00:07
- PDF PDFに精通した方に質問。JPEGファイル群を一つのPDFファイルにするときの容量変化について 6 2023/07/23 19:06
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- その他(スマホアプリ・スマホゲーム) アプリをスマホにダウンロード、インストールする方法 3 2022/08/13 11:26
- Android(アンドロイド) いま3台のAndroidを使っています。 AndroidってiPhoneには無いmicroSDXCが 1 2022/05/06 11:42
- Word(ワード) LibreOfficeで数年保存しているデータの変更作業 4 2022/07/08 17:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数ファイルを連続でダウンロード
-
PHPで複数ファイルのダウン...
-
eclipseでコメントアウトができ...
-
ダウンロードファイル名の文字...
-
wgetの使い方
-
PHPでファイルをダウンロードさ...
-
ファイル(PDF・エクセル・ワー...
-
ブラウザでExcelをダウンロード...
-
ファイル一覧を表示しその画面...
-
CSV出力時の”0”表示(電話番号...
-
phpでうまく画像がダウンロード...
-
onedrive にexcelファイルをア...
-
VBSの「MsgBox」について
-
こちらはただの直列処理ですか?
-
パースエラーとは?
-
リンク先を隠す方法はないでし...
-
拡張子php画像をjpg画像等に変...
-
図に示す階層構造で,現在のデ...
-
C# Excelファイルへの画像挿入。
-
PHPとCSVで簡易データベースな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPで複数ファイルのダウン...
-
phpでうまく画像がダウンロード...
-
ブラウザでExcelをダウンロード...
-
zip圧縮の種類について
-
PHPでファイルのダウンロードす...
-
VB.NETのFTPダウンロードについて
-
生成したHTMLをボタンクリック...
-
eclipseでコメントアウトができ...
-
【PHP】ダウンロードサイト作成...
-
複数ファイルを連続でダウンロード
-
phpでzipファイルダウンロード...
-
libxml2のインストール
-
PHPのFTP関数ftp_fgetエラーに...
-
ダウンロードファイル名の文字...
-
PHPでダウンロードしたファイル...
-
PHPでgz形式のファイルをダウン...
-
phpでの帯域制御、ダウンロード...
-
ファイルダウンロードについて
-
PHPでネット上のPDFファイルを保存
-
csvダウンロードについて
おすすめ情報