2009-07-01 6 views
0

PHPで外部ダウンロードをユーザーに渡す方法がないのだろうか?私がスクリプトでやりたいことは、特定の条件に依存し、ユーザーにサーバーAまたはサーバーBからのファイルを送信することです。しかし、どちらのサーバーへの直接URLもユーザーに知らせたくありません。PHPを外部にダウンロードするユーザーにダウンロードする

例:(サーバーCにある) ユーザー訪問:http://example.com/download?id=1234 サーバーAのアドレスをファイルに:http://servera.com/1234.exe サーバーBのアドレスをファイルに:

http://serverb.com/1234.exeは、誰かがに、http://example.com/download?id=1234訪れたときにことを、方法がありますユーザーに直接URLを渡すことなく他のサーバーのダウンロードを送信できますか?私はファイル(ここでは外部ファイル)を行うことができることを知っています。しかし、私はではなく、はすべての帯域幅がサーバーCを経由したいと思っています。サーバーCはほとんどリダイレクトです。

おかげで、 ジェームズ

答えて

2

クライアントは、そうでない場合、彼らはそれに接続することはできないだろう、彼らはからダウンロードしているサーバーのいくつかのレベルで知っている必要があります。

EDIT:

ブラウザのアドレスバーを変更したくない場合は、あなたがそうのようなContent-dispositionヘッダを使用して試すことができます:

header("Content-disposition: attachment;filename=1234.exe"); 
//then output the file contents 

注:このPHPスクリプトがなければなりませんサーバAとサーバBの両方にリダイレクトされます。したがって、サーバCはhttp://servera.com/download.phpまたはhttp://serverb.com/download.phpにリダイレクトされます。

+0

はい、私は理解していますが、ヘッダーでこれを行うことはできますか?平均的なユーザーはこれを見ることができますか? –

+0

セキュリティ機能として、ブラウザはファイルをダウンロードしているサーバからユーザに常に通知します。 –

+1

PHPがファイルをパイプして 'Content-disposition'ヘッダを与えると、ブラウザはアドレスバーを更新しない可能性があります。 –

0

ハム

あなたは、NATやプロキシを使用して、できることがあります。しかし、これは非常に困難です。

ヘッダーを変更するだけでは機能しない可能性があります。

EDIT:いいえ、すべてのサーバーのプロキシを一度に追加する必要があります(ゲートウェイなど)。

+0

私はmod_proxyでApacheを介してプロキシを行うことができますか?それでも、サーバーCの帯域幅が使用されます。 –

関連する問題