2

ダウンロード可能なビデオファイルを作成しようとしています。私のサイトにはファイルのリストがあります。すべてのビデオは .flv 形式 (フラッシュ) です。すべてのビデオのファイルへの正確なリンクがあります。ただし、すべてのブラウザで、コンテンツをクリックした後、ブラウザのウィンドウにロードされます。私はこれに入る必要はありません。私が理解しているように、ダウンロード ファイルの MIME タイプを含むリダイレクト ページを作成する必要があります。私は正確に何をすべきですか?言語: PHP

4

2 に答える 2

9

そのために推奨される MIME タイプは次のapplication/octet-streamとおりです。

「オクテット ストリーム」サブタイプは、ボディに任意のバイナリ データが含まれていることを示すために使用されます。[…]

「アプリケーション/オクテット ストリーム」エンティティを受け取る実装に推奨されるアクションは、Content-Transfer-Encoding を元に戻して、データをファイルに格納するか、おそらくそれをユーザー指定の入力として使用することです。処理する。

于 2009-07-02T15:08:21.253 に答える
7

以下を使用して 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」に指定します。 .

于 2009-07-02T15:03:29.360 に答える