2009-05-29 86 views
4

我有一个信息的PHP页面,并链接到文件,如PDF文件。文件类型可以是任何东西,因为它们可以由用户上传。强制一个文件下载

我想知道如何强制下载任何类型的文件,而不会强制下载链接到网站链接的其他页面。我知道可以通过标题来做到这一点,但我不想打破我的网站的其余部分。

所有到其他页面的链接都是通过Javascript完成的,实际的链接是#,所以也许这样可以吗?

我应该设置

header('Content-Disposition: attachment;) 

整个页面?

+1

我敢肯定,这一定是个傻瓜... – Seb 2009-05-29 13:17:37

+0

不,它不是...... – 2009-06-02 10:09:22

回答

11

您需要发送这两个标题字段的特定资源:

Content-Type: application/octet-stream 
Content-Disposition: attachment 

Content-Disposition可以另外有一个filename参数。

您可以通过使用将文件发送一个PHP脚本做到这一点:

header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment'); 
readfile($fileToSend); 
exit; 

并且其文件名是通过URL传递到该脚本。您也可以使用一些Web服务器功能,如mod_rewrite迫使类型:

RewriteEngine on 
RewriteRule ^download/ - [L,T=application/octet-stream] 
6

稍有不同的风格,并准备去:)

$file = 'folder/' . $name; 

if (! file) { 
    die('file not found'); //Or do something 
} else { 
    // Set headers 
    header("Cache-Control: public"); 
    header("Content-Description: File Transfer"); 
    header("Content-Disposition: attachment; filename=$file"); 
    header("Content-Type: application/zip"); 
    header("Content-Transfer-Encoding: binary"); 
    // Read the file from disk 
    readfile($file); 
}