• ベストアンサー

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

教えて下さい。 以下のような事がやりたいです。 windows up dataのように複数あるファイルから任意のファイルを クライアントに選択してもらい、それをダウンロードさせる。 (リンクを張るのではなく) 当方の環境は、UNIX系OS、Apache、perlです。 JAVAは使った事がありません。 宜しくお願いします。

  • CGI
  • 回答数4
  • ありがとう数4

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

  • ベストアンサー
  • nak205
  • ベストアンサー率60% (40/66)
回答No.3

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
質問者

お礼

ありがとうございます! 上記の方法でやれそうです。 また何かありましたら宜しくお願いいたします。

その他の回答 (3)

  • po-net
  • ベストアンサー率36% (172/477)
回答No.4

おや、#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
質問者

お礼

ありがとうございます。 とてもわかりやすいです。 こういう処理を行った場合、クライアント側へのダウンロードが終了するまでは、このプロセスは残りそうですね。 現役を引退したPCを使用しているのでapacheの設定で接続数を限定して運用しよう と思います。 どうもありがとうございました。

  • nak205
  • ベストアンサー率60% (40/66)
回答No.2

こんにちは。 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
質問者

お礼

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

  • po-net
  • ベストアンサー率36% (172/477)
回答No.1

チェックボックスを使って選択されたものをまとめてダウンロードとかする方法をとってみては? ただ、そのままインストールするのであえば勝手は違ってきますが。 それとParlご使用とのことですが、結構使われていますか? これから勉強するとか、かなり使っているというなら、PHPもいいですよ。 Apacheで使えるし、CGIよりも高速です。 PostgreSQLやMySQLなどのオープンソースのデータベースとの連携もスムーズです。 もともと簡単だけど、CやParlの形式に似ているから、経験者ならなおさら簡単に感じるかも。 気が向いたら調べてみてください。 http://www.php.gr.jp/

update
質問者

お礼

ありがとうございます。 "チェックボックスを使って選択されたものをまとめてダウンロード"これです! これがやりたいのですが、ファイル名の取得まではなんとかできるのですが、そのファイルをクライアントへ送信(ftpではなくhttpで)する方法がわかりません。 もう少しアドバイスお願いいたします。

関連するQ&A

  • ダウンロード ポップアップ文字化け

    OSはFreeBSD上でWEBサイトを運営しています。 WEBサーバはapache2.0を使用しています。 HTMLを使用してブラウザの画面上から<a href・・・・でファイルをダウンロードさせることをしていますが、ダウンロード保存ポップアップ画面が表示されるとファイル名が文字化けしてでてきてしまいます。 いざ保存するとそのまま文字化けしたファイル名で保存してしまいます。 CGIはperlを使用していますが どれが原因なのか特定できません。 よろしくお願いします。

  • UPデートが出来ない

    ウイルス0を購入して2台目の新たらしいパソコンにはうまくダウンロードできたが、旧のパソコンが急に出来なくなって、契約切れの表示が出て、何度も入力してもエラーが出てしまう、複数使用できると聞いているのですが、UPデートが出来ない日にちばかりたってます。  当方聴覚障害者でTELで聞けません???????

  • Windows環境でのrpmダウンロード

    Linux機が直接ネットに接続している場合は、rpmfindやup2dateで直接rpmファイルを取得しに行くことが出来ますが、一旦Windows環境でダウンロードし、FD等でLinux機に持っていくしかない当方環境の場合、どのようにしてrpmファイルを取得できるのでしょうか? ダウンロードできるサイトのURL等も教えていただけると幸いです。

  • フォルダを丸ごとひとつ、WEBサイトからダウンロードはできますか?

    音声ファイルの複数入ったフォルダを、 自分のサーバーにアップしています。 これを、あるWEBサイトからリンクをはって、 中の音声ファイルをまとめて、ダウンロードしてもらいたい、 と思っているのですが、 ホームページビルダーでは、このようなリンクは貼れませんでした。 音声ファイルは沢山入っているので、 ダウンロードする人の手間を考えて、 一気にフォルダごと、ダウンロードできればいいのですが、 このような事は出来ないのでしょうか。 ZIP形式(といっても自分はまだよく分ってないのですが、)でないと、 複数のファイルをまとめて、というのはムリなのでしょうか。 教えていただけますと、助かります!!

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

    サーバー(アパッチ)においてあるdxfファイルを強制的にダウンロードさせたいのですが、設定はサーバー側で行うのでしょうか? 現在は各クライアントマシンの環境によってダウンロードできるのもあるのですが、ブラウザ(IE5.5)上にdxfファイルの中身のテキストが表示されてしまうのもあります。 強制的にダウンロードさせたいのですが・・・ よろしくお願いします。

  • Windows環境でのrpmダウンロード

    Linux機が直接ネットに接続している場合は、rpmfindやup2dateで直接rpmファイルを取得しに行くことが出来ますが、一旦Windows環境でダウンロードし、FD等でLinux機に持っていくしかない当方環境の場合、どのようにしてrpmファイルを取得できるのでしょうか?

  • 複数のファイルをダウンロードするしくみ

    CGI(C言語)でプログラミングしています。 Webサーバーからクライアント(ブラウザ経由)へ複数のファイルを ダウンロードするしくみを考えております。 現在のところ思考中のしくみとして、 (1)ActiveXを使用しActiveXから複数のファイルをクライアントに ダウンロードする。(ActiveXの使用を許してもらえない) (2)Scriptを使用しlocationに設定して取得する。(繰り返し)  (しかし、すべてが完全にダウンロードできたか確認できないので×) (3)Java アプレット?  (方法がわからない) などで行き詰まっております。 なにか、ほかに方法がありましたら、教えていただけないでしょうか。 非常に困っています。よろしくお願いいたします。

  • BIOSのUPデートの方法教えて下さい。

    雑誌を読んでいたらBIOSも新しいものにUPする方が良いと書いてあったので、マザーボードのホームページからダウンロードし更新しようと思いましたが何せすべてが英文なので具体的な手順が良く判りません。 英文の意味も分からず、更新するメリットも良く判っていない者は更新する資格もないと言ってしまえばそれまでなのでしょうが、もし詳しい方がおられましたら教えて下さい。 なお、当方のマザーボードはGIGABYTE GA6VXE7+です。 現在のところ、ホームページからBIOSのUPデートファイルをダウンロードし、Awdflash.exe AWDFLASH.PIF 6vxe7p.F9 以上3つのファイルを解凍しましたが、このあとどうすれば良いのかよく判りません。

  • 画像ダウンロード

    TMEspionです。 画像ダウンロードページを作る際に、複数選択してまとめてダウンロード、又は、ダウンロードした画像をメールで送るといった動作をする場合、perlみたいな別ファイルを使わずにHTMLに埋め込み型(javascriptでもPHPでも)で、できないものなんでしょうか? もしできるとすれば、参考ページの紹介もお願いします。

  • ファイルダウンロードについて

    現在、クライアントアプリから指定サーバーに接続し、 クライアントアプリのバージョンアップ版があれば、 ダウンロードするという機能をヘルプ等を参考に 実装しており、CHttpFileを使用してファイルを読み込み バッファに格納までは出来たのですが、ファイル名を 指定して保存する事ができません。 どなたかご教示願えませんでしょうか? 環境はVC++6.0 MFCです。

専門家に質問してみよう