2009-07-02 106 views
2

我试图创建可下载的视频文件。在我的网站上有一个文件列表。 所有视频均为.flv格式(flash)。所有视频都有精确的文件链接。 但是在点击内容之后的所有浏览器中都会加载到浏览器的窗口。我不需要这个。据我了解,我应该创建包含MIME类型的下载文件的重定向页面。我该做什么? 语言:PHPMIME类型的下载文件

回答

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); 

?> 

更换信息作为上述规定,并与名为“文件路径”包含文件路径的GET参数点“下载”链接到这个网页。例如,如果您将该php文件命名为“download.php”,请将名为“movie.mov”(与download.php位于同一目录中)的文件的下载链接指向“download.php?filepath = movie.mov”。

+0

正如我所知download.php?filepath = movie.mov不好=)导致everyboady可以从服务器上下载任何文件。不过谢谢。 – Ockonal 2009-07-02 17:04:47

9

推荐的MIME类型即application/octet-stream

的“八位字节流”子类型用于指示一个主体包含任意的二进制数据。 [...]

接收“application/octet-stream”实体的实现的推荐操作是仅提供将数据放入文件中,并取消任何Content-Transfer-Encoding,或者可能使用它作为用户指定进程的输入。