Php下载脚本不能正常工作
我有一个脚本,它将文件上传到联机目录并将文件详细信息存储在数据库中。存储时的文件被重命名为数据库中条目的ID。无论用户何时请求下载,简单的SQL语句都会从数据库中检索文件详细信息,从数据库中读取文件内容,并提示文件下载。下面是我的代码:Php下载脚本不能正常工作
$one_file = $FILE_OBJECT->get($_GET['id']); // this is an object which just grabs the file details from the database
header("Content-type: ".$one_file['type']); // add here more headers for diff. extensions
header("Content-Disposition: attachment; filename=\"".$one_file["filename"]."\""); // use 'attachment' to force a download
header("Content-type: application/octet-stream");
header("Content-Disposition: filename=\"".$one_file["filename"]."\"");
readfile(_config('files_path').$_GET['id']);// reading the actual raw file stored in my online directory
问题是,即时通讯使用测试word文档及其完美上传 - 我甚至已经检查原始文件被手动更改其扩展名,它的上传完美上传。问题在于,当使用上面的代码下载Word文件时,Word文件似乎已损坏或发生了什么,因为当我尝试打开它时,它全是混乱和混乱。发生了什么?我在我工作过的其他几个网站上使用了这个代码片段,它们工作得很好......请帮助!
默认情况下,PHP的头文件函数将替换之前的头文件,并且名称相同,所以前两个头文件将被第二个头文件覆盖。删除第二个,看看是否有效。
做到了这一点,但没有帮助..在上面提到的代码片段中的问题,因为该文件正在存储在线目录罚款 – Ali 2010-07-23 20:55:22
它可能是一个编码与readfile的问题,尝试添加'header(“Content-Transfer-Encoding:binary”);'其他文件类型工作吗?尝试上传一个纯文本文件 – 2010-07-23 21:44:00
我有同样的问题:我每次下载文件时,它是所谓的“腐败”。事实证明,我做了一个愚蠢的目录路径错误,但PHP错误被写入到下载的文件。当然,这使得它“腐败”。
其实我通过阅读Ian Wetherbee关于用纯文本文件测试的评论来解决这个问题。谢谢伊恩!
呃...... ** **,'teh'。但是,作为一个问题:(1)你能否确认在数据库中的存储是否正确完成,即:如果将该内容作为文件保存在文件系统中,它是否有效? (2)如果我将''../ conf/yoursupersecretpasswordfile''作为'$ _GET ['id']''会发生什么? – Wrikken 2010-07-23 20:45:09
当你一直使用“teh”时,这篇文章很难阅读。火狐浏览器和Chrome浏览器内置了拼写检查器,正确拼写并不难。如果英语不是您的第一语言,那么我会建议您使用拼写检查器,因为它会从您的帖子中恶化,并且使其更难以帮助/理解。 (不意味着火焰或任何东西,只是提供一些有用的批评未来的职位) – 2010-07-23 20:45:39
Fixt。它也让我失望了。 – cHao 2010-07-23 20:48:23