• ベストアンサー

HTTPでダウンロードさせるには

ファイルを特定の相手にダウンロードさせる方法としてFTPが有りますが、HTTP(インターネットブラウザー)を使って特定のアドレスにアクセスすると自動的にダウンロードを開始させるという方法を教えて下さい。

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

  • ベストアンサー
  • Dpop
  • ベストアンサー率51% (279/544)
回答No.6

#4 です。 あ、#2 さんの回答だと旨く行かないですね。リフレッシュ先のURLがHTMLで書かれているページでは無いので、リフレッシュ終了後に元のページに戻ってきてしまうのですよ。 それが、表示を繰り返してしまう理由です。 やはり、location: ヘッダを無理やり出力してあげないとダメかも知れませんね。

homma
質問者

お礼

なんどもありがとうございます。参考になります。

その他の回答 (5)

  • Dpop
  • ベストアンサー率51% (279/544)
回答No.5

#4 です。 テストは行っていませんが、こんな感じです。 #!/usr/local/bin/perl $durl = "http://~"; # ここにダウンロード対象のURLを指定する。 $gurl = "http://~"; # ダウンロード終了後に移動するページのURLを指定する。 print "location: $durl\n\n"; print "location: $gurl\n\n"; exit(0); 以上です(笑) location: ヘッダを送出するだけであれば、この程度のコードで終了してしまいます。ただし、ダウンロード後に他のページへ移動するのではなく、独自に適当な表示を行うのであれば、もうちょっと工夫が必要になるかも知れません。(と、言っても、非常に簡単なものですが。)

homma
質問者

お礼

回答ありがとうございます。CGI試してみます。

  • Dpop
  • ベストアンサー率51% (279/544)
回答No.4

#2 さんの回答で、ほとんどOKだと思いますが、別の方法と言いますか、もっとHTTP的な方法を紹介します。 HTTPヘッダの中に、location: と言うヘッダがあります。location: ヘッダにダウンロードさせたいファイルのURLを指定したCGIを作成し、そのCGIをHTTPでアクセスすると、ブラウザの表示は一切なく、ダウンロードだけが開始される。と言う状態になります。 ただし、ダウンロード終了後、なんらかの表示を行わないと(若しくは、もう1つ location: ヘッダを書いて、適当なページへ飛ばすのでも良い。)、エラーページが表示されてしまいますが。 HTTP と言うと、HTML での処理をイメージさせる方が多いかとは思いますが、HTTP だけの機能でも、この程度の事ならできてしまいます。

homma
質問者

お礼

回答ありがとうございます、ただいまchie65536さんのHTMLで苦労しています。CGIを書いたことがないんですが難しいですか?

  • sizumoka
  • ベストアンサー率37% (3/8)
回答No.3

ダウンロードさせたいファイルを圧縮します。zipとかで・・・ そのファイルをFTPでサーバにアップします。 ファイルの置き場所(アドレス)をリンクに設定します。 クリックすると自動的にダウンロードしますか?のダイアログがでます。

homma
質問者

お礼

回答ありがとうございます。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

ダウンロードさせたいファイルがlhaアーカイブファイルの場合を例にします。 ダウンロード用ページに <HTML> <HEAD><TITLE>○○.LZHのダウンロード</TITLE></HEAD> <BODY> <META HTTP-EQUIV = "Refresh" content="1; url=http://アーカイブファイルのURL"> ○○.LZHをダウンロードします。<BR> 自動的にダウンロードされない場合は<A HREF="http://アーカイブファイルのURL">ここ</A>をクリックして下さい<BR> <A HREF="http://元のページのURL">戻る</A><BR> </HEAD> </HTML> と書いておきます。このHTMLページをブラウザで開くと、1秒後に自動的にダウンロードのダイアログが出ます。 これでうまく行かない(ダウンロードのダイアログが出ず、ブラウザが直接開こうとする)場合は、ダウンロードさせたいファイルがあるフォルダの .htaccess に、 AddType application/x-lha .lzh の1行を足して下さい。

homma
質問者

補足

教えていただいたHTMLをダウンロードさせたいデータのあるホルダーに入れて、同時にダウンロードさせたいLZHファイルを同じホルダーに入れたのですがブラウザーでアドレスを指定するとHTMLを一秒おきくらいに表示を繰り返します、どこがおかしいかわかりますか。

  • sisya
  • ベストアンサー率39% (97/244)
回答No.1

ファイルが置いてあるアドレスを ブラウザの「アドレス」欄に入力すればOKです。

homma
質問者

お礼

回答ありがとうございます。