Mongodb-PHP:文件下载未下载预期文件[重复]

Posted

技术标签:

【中文标题】Mongodb-PHP:文件下载未下载预期文件[重复]【英文标题】:Mongodb-PHP: File download doesnt download expected file [duplicate] 【发布时间】:2015-02-24 07:23:29 【问题描述】:

我正在使用带有 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....发生了什么???

【问题讨论】:

请检查 php error_log。由于 php 错误,您下载的文件为空。你试过用笔记本打开“白色”文件吗? 没有。我尝试用 .pdf 重命名白色文件,然后它显示“无法打开文件”... 用记事本打开它,如果它是一个php错误,它也可能被扔在那里。 【参考方案1】:
$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;

【讨论】:

跟application.pdf & text/pdf 有关系吗?? 是的,另请参阅webdesign.about.com/od/multimedia/a/…

以上是关于Mongodb-PHP:文件下载未下载预期文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Litespeed 服务器上的重定向未按预期工作

在 Git 中重命名文件后没有预期的日志 [重复]

如何将 maxPoolSize 与 mongodb-php 驱动程序版本 1.2.0 一起使用

MongoDB-PHP拓展

http相应状态码,重定向和转发区别,文件下载流对应格式

文件输入未按预期工作