ダウンロード可能なビデオファイルを作成しようとしています。私のサイトにはファイルのリストがあります。すべてのビデオは .flv 形式 (フラッシュ) です。すべてのビデオのファイルへの正確なリンクがあります。ただし、すべてのブラウザで、コンテンツをクリックした後、ブラウザのウィンドウにロードされます。私はこれに入る必要はありません。私が理解しているように、ダウンロード ファイルの MIME タイプを含むリダイレクト ページを作成する必要があります。私は正確に何をすべきですか?言語: PHP
2 に答える
そのために推奨される MIME タイプは次のapplication/octet-stream
とおりです。
「オクテット ストリーム」サブタイプは、ボディに任意のバイナリ データが含まれていることを示すために使用されます。[…]
「アプリケーション/オクテット ストリーム」エンティティを受け取る実装に推奨されるアクションは、Content-Transfer-Encoding を元に戻して、データをファイルに格納するか、おそらくそれをユーザー指定の入力として使用することです。処理する。
以下を使用して PHP ページを作成します。
<?php
$filepath = "path/to/file.ext";
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$filepath");
header("Content-Type: mime/type");
header("Content-Transfer-Encoding: binary");
// UPDATE: Add the below line to show file size during download.
header('Content-Length: ' . filesize($filepath));
readfile($filepath);
?>
$filepath
ダウンロードするファイルのパスに設定し、ダウンロードContent-Type
するファイルの MIME タイプに設定します。
「ダウンロード」リンクをこのページに向けます。
同じタイプの複数のファイルの場合:
<?php
$filepath = $_GET['filepath'];
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$filepath");
header("Content-Type: mime/type");
header("Content-Transfer-Encoding: binary");
// UPDATE: Add the below line to show file size during download.
header('Content-Length: ' . filesize($filepath));
readfile($filepath);
?>
上記の情報を置き換え、ファイル パスを含む「filepath」という名前の GET パラメータを使用して、このページへの「ダウンロード」リンクを指定します。
たとえば、この php ファイルに「download.php」という名前を付ける場合、「movie.mov」という名前のファイル (download.php と同じディレクトリ内) のダウンロード リンクを「download.php?filepath=movie.mov」に指定します。 .