2014-12-27 23 views
0

我正在使用MongoDB和php。我有协议下载选项,当用户点击用户时获得下载的协议。在点击我已经浏览到脚本,在PHP文件下载代码是有 代码Mongodb-PHP:文件下载不下载预期的文件

$mongoDbA = $mongoDb->findOne(array("agency_id" => new MongoId($_GET['id']))); 
$filename = '../../images/upload/'.$mongoDbA['file']; 

if (file_exists($filename)) 
{ 
header('Content-Description: File Transfer'); 
header('Content-Type: text/pdf'); 
header('Content-Disposition: attachment; filename='.basename($filename)); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($filename)); 
readfile($filename); 
exit; 
} 

我已经允许只上传PDF文件,所以只有PDF文件存在于数据库

当我点击则给我错误&给我白色有没有扩展名的文件&大小是1 kb几乎....发生了什么???

+0

请检查php error_log。您下载的文件由于php错误而为空。你有没有试过用笔记本打开“白色”文件? –

+0

没有。我试图用.pdf重命名白色文件,然后显示“无法打开文件”... – Shaggie

+0

用记事本打开它,如果它是一个PHP错误,它可能也被扔在那里。 –

回答

0
$filename = './images/upload/'.$mongoDbA['file']; 

    $fileinfo = pathinfo($filename); 
    $sendname = $fileinfo['filename'] . '.' . $fileinfo['extension']; 

    header('Content-Type: application/pdf'); 
    header('Content-Disposition: attachment; filename="$sendname"'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($filename)); 
    readfile($filename); 
    exit; 
+0

这是工作.... – Shaggie

+0

它与application.pdf&text/pdf有什么关系? – Shaggie

+0

yes另请参阅http://webdesign.about.com/od/multimedia/a/mime-types-by-content-type.htm –