自分のサイトのすべてのビデオの下に「このファイルをダウンロード」機能を追加したいと思っています。ブラウザーでファイルの再生が開始されることがあるため、ファイルにリンクするだけでなく、ユーザーにファイルのダウンロードを強制する必要があります。問題は、ビデオファイルが別のサーバーに保存されていることです。
PHPで強制的にダウンロードする方法はありますか?
自分のサイトのすべてのビデオの下に「このファイルをダウンロード」機能を追加したいと思っています。ブラウザーでファイルの再生が開始されることがあるため、ファイルにリンクするだけでなく、ユーザーにファイルのダウンロードを強制する必要があります。問題は、ビデオファイルが別のサーバーに保存されていることです。
PHPで強制的にダウンロードする方法はありますか?
あなたはこのようなことを試すことができます:
$file_name = 'file.avi';
$file_url = 'http://www.myremoteserver.com/' . $file_name;
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"".$file_name."\"");
readfile($file_url);
exit;
私はちょうどそれをテストしました、そしてそれは私のために働きます。
readfile
リモートURLを読み取れるようにするには、をfopen_wrappers
有効にする必要があることに注意してください。
テスト済みのdownload.phpファイルは
function _Download($f_location, $f_name){
$file = uniqid() . '.pdf';
file_put_contents($file,file_get_contents($f_location));
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Length: ' . filesize($file));
header('Content-Disposition: attachment; filename=' . basename($f_name));
readfile($file);
}
_Download($_GET['file'], "file.pdf");
ダウンロードへのリンクは
<a href="download.php?file=http://url/file.pdf"> Descargar </a>
これを試して:
<?php
$FileName = '/var/ww/file.txt';
header('Content-disposition: attachment; filename="'.$FileName.'"');
readfile($FileName);
キーはheader()
です。ダウンロードとともにヘッダーを送信する必要があります。これにより、ユーザーのブラウザーで [ファイルの保存] ダイアログが強制的に表示されます。
<?php
$FileName = '/var/ww/file.txt';
header('Content-disposition: attachment; filename="'.$FileName.'"');
readfile($FileName);
このコードを使用して。ファイル名を任意の名前に保存することは可能ですか。たとえば、「file.mp3」の代わりにhttp://remoteserver.com/file.mp3という URLがある場合、このスクリプトを使用してファイルを「newname.mp3」としてダウンロードできますか