OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

windows up dateのようなダウンロード方法

  • 困ってます
  • 質問No.236166
  • 閲覧数65
  • ありがとう数4
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 100% (4/4)

教えて下さい。

以下のような事がやりたいです。

windows up dataのように複数あるファイルから任意のファイルを
クライアントに選択してもらい、それをダウンロードさせる。
(リンクを張るのではなく)

当方の環境は、UNIX系OS、Apache、perlです。
JAVAは使った事がありません。
宜しくお願いします。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル9

ベストアンサー率 60% (40/66)

Windows Update以外でも、ブラウザからファイルをダウンロードしたことはありますよね?あんな感じで、ファイルを開くか、ファイルをコンピュータン保存するか選択してください、というダイアログボックスがでて、保存を選ぶと保存先を選択するようにするやつです。Windows Updateみたいなのではなく、普通のファイルダウンロードの保存中見たいなバーは出ますけど。

zipファイルの場合はタイプをx-zipにしてみてください。

例えばファイル名がarchive.zipで、ディレクトリの/home/httpd/html/filesにある場合は:

$filename = 'archive.zip';
$file = "/home/httpd/html/files/$filename";
$filetype = 'x-zip';

print "Content-Disposition: attachment; filename=\"$filename\"\n";
print "Content-type: application/$filetype\n\n";


open (FILE, "$file"); #実際はオープン失敗したときのエラー処理をつける。
while (<FILE>) {
print "$_";
}
close FILE;

こんな感じです。
お礼コメント
update

お礼率 100% (4/4)

ありがとうございます!
上記の方法でやれそうです。

また何かありましたら宜しくお願いいたします。
投稿日時 - 2002-03-17 11:57:32
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル12

ベストアンサー率 36% (172/477)

チェックボックスを使って選択されたものをまとめてダウンロードとかする方法をとってみては? ただ、そのままインストールするのであえば勝手は違ってきますが。 それとParlご使用とのことですが、結構使われていますか? これから勉強するとか、かなり使っているというなら、PHPもいいですよ。 Apacheで使えるし、CGIよりも高速です。 PostgreSQLやMySQLなどのオープンソースのデータ ...続きを読む
チェックボックスを使って選択されたものをまとめてダウンロードとかする方法をとってみては?
ただ、そのままインストールするのであえば勝手は違ってきますが。

それとParlご使用とのことですが、結構使われていますか?
これから勉強するとか、かなり使っているというなら、PHPもいいですよ。
Apacheで使えるし、CGIよりも高速です。
PostgreSQLやMySQLなどのオープンソースのデータベースとの連携もスムーズです。
もともと簡単だけど、CやParlの形式に似ているから、経験者ならなおさら簡単に感じるかも。
気が向いたら調べてみてください。
http://www.php.gr.jp/
お礼コメント
update

お礼率 100% (4/4)

ありがとうございます。
"チェックボックスを使って選択されたものをまとめてダウンロード"これです!
これがやりたいのですが、ファイル名の取得まではなんとかできるのですが、そのファイルをクライアントへ送信(ftpではなくhttpで)する方法がわかりません。
もう少しアドバイスお願いいたします。
投稿日時 - 2002-03-16 19:51:57
  • 回答No.2
レベル9

ベストアンサー率 60% (40/66)

こんにちは。 WindowsではActiveXを使って既にインストールされているソフトの情況やら、インストールまでやらせているようですけど、そこまではPerlではできないですよね。。 せいぜい出きるのはクライアントが選択したファイルをPerlでオープンして、適当なヘッダを付けてブラウザに向けてprintさせてやる問い方法でですが、私がいつも使うヘッダは: print "Content- ...続きを読む
こんにちは。
WindowsではActiveXを使って既にインストールされているソフトの情況やら、インストールまでやらせているようですけど、そこまではPerlではできないですよね。。
せいぜい出きるのはクライアントが選択したファイルをPerlでオープンして、適当なヘッダを付けてブラウザに向けてprintさせてやる問い方法でですが、私がいつも使うヘッダは:

print "Content-Disposition: attachment; filename=\"$file\"\n";
print "Content-type: application/$c_type\n\n";

$file はファイル名、$c_type はexeファイルは "x-exe" だったりします。
一応、WindowとMacで動作確認はとれてます。

複数ダウンロードさせるにはファイルのリストを作っておいて、foreachでopenをループさせればできたと思います。

ヘッダに関してはあまり詳しくないので、もっとしっかりした知識をおもちの方、ヘルプお願いします。というか、私のはあっちこっちのスクリプトからもってきたもので、ちゃんと動いたものを使ってますので、本当のルールをご存知の方、ぜひ教えてください。(ひとの質問のところで厚かましい?)
お礼コメント
update

お礼率 100% (4/4)

ありがとうございます。
openを使用した場合、クライアント側では"ファイルの保存中です"など、windows up date のような感じでダウンロード可能でしょうか?
複数の選択されたファイルをzipで圧縮してそれをsubmitを契機にダウンロードさせたいです。zipファイルを指定しopenを使用すればダウンロードされるのでしょうか?
質問ばかりで申し訳ありません。
もう少し教えてください。
投稿日時 - 2002-03-16 20:05:27
  • 回答No.4
レベル12

ベストアンサー率 36% (172/477)

おや、#3の方、サポートありがとうございます。 Parlは触れたことすらないので助かりました。 結構PHP似ているというのは本当ですね。 結構分かりやすいかも。。。 #3の方のやり方ができるなら、コレを応用してできませんか? フォームで受け取ったファイル名を配列にでも入れておいて、ファイル名を配列から順に$filenameに入れていけば・・・。 たぶん、送信終了してから次のファイル転送 ...続きを読む
おや、#3の方、サポートありがとうございます。
Parlは触れたことすらないので助かりました。

結構PHP似ているというのは本当ですね。
結構分かりやすいかも。。。

#3の方のやり方ができるなら、コレを応用してできませんか?
フォームで受け取ったファイル名を配列にでも入れておいて、ファイル名を配列から順に$filenameに入れていけば・・・。
たぶん、送信終了してから次のファイル転送を始めるという管理ができるかどうかがポイントだと思いますよ。

私がやるとしたら、

>$filename = 'archive.zip';
>$file = "/home/httpd/html/files/$filename";
>$filetype = 'x-zip';

>print "Content-Disposition: attachment; filename=\"$filename\"\n";
>print "Content-type: application/$filetype\n\n";

>open (FILE, "$file"); #実際はオープン失敗したときのエラー処理をつける。
>while (<FILE>) {
>print "$_";
>}
>close FILE;

この文に入る前にやっておくことは「フォームで受け取ったファイル名を、配列に入れておく」→「ファイル数を把握」です。
その後、上記の文を繰り返し文でくくります。
条件は、「ファイル数よりも繰り返し変数が小さい場合は繰り返す」で。
もしかしたら、もう少しスマートな方法があるかもしれませんね。

関数などが分からないので、言葉で書きましたが、通じたでしょうか?
お礼コメント
update

お礼率 100% (4/4)

ありがとうございます。
とてもわかりやすいです。

こういう処理を行った場合、クライアント側へのダウンロードが終了するまでは、このプロセスは残りそうですね。
現役を引退したPCを使用しているのでapacheの設定で接続数を限定して運用しよう
と思います。
どうもありがとうございました。
投稿日時 - 2002-03-17 12:01:58
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ