2013-02-14 32 views
0

我想要做的只是每个用户只允许一次下载(一次访问一个href)为此,我在用户表中有一个变量,当链接已经变化时点击。 我使用“download.php?file = file.xxx”来做到这一点。下载一次文件 - 损坏的文件错误

的download.php

$file= basename($_GET['file']); 
$root = "documents/rece/"; 
$path= $root.$file; 
echo $path; 

if (is_file($path)) 
{ 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.$file); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($path)); 
    readfile($path); 
} 
else 
     echo "File error"; 
    exit(); 

?> 

我也更新DDBB和工作。之后,我可以显示或隐藏链接。问题是下载的文件已损坏,无法打开。我将使用pdf或doc,也许是zip。

难道是因为路径吗?

+0

如果连接丢失怎么办?你应该在下载完成后设置标志而不是点击? – CloudyMarble 2013-02-14 11:19:11

+0

你是对的,我正在消除这种可能性。我会考虑的。无论如何,我的问题是,文件不正确。我不知道这是因为标题(我认为他们是正确的)还是因为什么...感谢您的评论 – legami 2013-02-14 11:21:57

+0

尝试检查任何BOM字符 – 2013-02-14 11:29:29

回答

0

PDF文件,据我所知,开始是这样的:

%PDF-1.4 

此致开始4个空行加documents/rece/Form.pdf%PDF-1.4。您显然已经在您发布的代码之前的某个位置打印了它。

+0

我有一个echo $路径....可以这样吗?为什么我不能使用它? – legami 2013-02-14 12:23:45

+0

我会打个比方。想象一下你用你的凸轮拍摄一张照片,在Notepad ++中打开生成的JPEG,输入你的名字并保存文件。照片会发生什么? – 2013-02-14 12:29:36

+0

对。我认为这个文件是以头文件开头的,之前的所有代码都没有包含在内。谢谢。 – legami 2013-02-14 12:31:33