0

別のサーバーからファイルをダウンロードしています。このファイルをサーバーに保存するのではなく、ユーザーにプッシュしたいと考えています。

言い換えれば、ファイルハンドルを渡して、サーバーを通過してマシンに保存するだけです。これどうやってするの?私はこれまでのところこれを持っています:

$handle = fopen($_GET['fileURL'], 'r');
$filename = stream_get_contents($handle);

おそらくヘッダーを使用して、これをユーザーにプッシュするにはどうすればよいですか?

助けと指示をありがとう。

編集

私はヘッダーを持っています:

header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");

ヘッダーをプッシュしないというだけです。約15秒後に空白のページが表示され、ファイルをダウンロードしているように見えますが、ファイルが提供されていません。

スクリプトがヘッダーをストリームとしてユーザーにすぐに送信することを望みます。出口();

4

2 に答える 2

4

これを試すことができます

$filetype = mime_content_type($filename);
header('Content-type: '.$filetype);
header('Content-Disposition: attachment; filename="'.$filename.'"');

あなたの編集のための更新:

ヘッダーが既にエラーを送信しているように聞こえるため、エラーを無効にしていますか?

error_reporting(E_ALL | E_STRICT);
于 2009-02-12T00:48:25.663 に答える