リモートファイルをメモリに読み込まずにPHPでダウンロードすることは可能ですか?私はfpassthru()、readfile()、file_get_contents()がすべてファイルをメモリに読み込んでからブラウザに出力することを知っています。PHPはメモリに読み込まずにリモートファイルを強制的にダウンロードする
ここに私のコードです:
if($url = getRemoteFileURL($file_id))
{
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="abc.zip"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Pragma: no-cache');
readfile($url); // is there a better function ?
}
私は、ヘッダー(「場所:」)したくないあなたがダウンロードしたファイルにheader("Location: ...");
をすればそれがURLに
リモートファイルのチャンクされたフェッチを使用して、そのファイルを削除することができます。しかしそれはあなたのスクリプトからの複数のHTTP要求を必要とし、非常に非効率的です。 –