正确的PHP标头用于下载存储的文件

时间:2012-05-26 14:00:10

标签: php mysql

我使用这种编码方式将文件放在我的MYSQL数据库上。我很确定它存储正确

if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
{
$fileName = $_FILES['userfile']['name'];
$tmpName  = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];

$fp      = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

if(!get_magic_quotes_gpc())
{
    $fileName = addslashes($fileName);
}

但我在从数据库下载时遇到问题,我的标题错了。

$resumename = get_the_author_meta('resumename', $current_user->ID); 
$resumetype = get_the_author_meta('resumetype', $current_user->ID); 
$resumesize = get_the_author_meta('resumesize', $current_user->ID); 
$content = get_the_author_meta('resumecontent', $current_user->ID);

header("Content-Length: $resumesize");
header("Content-Type: $resumetype");
header("Content-Disposition: attachment; filename=$resumename");

echo($content);

目前它返回页面的损坏文件(它使用标题加载实际页面数据,而不是文件数据)。

任何人都知道要使用的标头正确吗?我试过@readfile,情况更糟。文件类型主要是doc,pdf,rtf。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

 header("Content-Description: File Transfer");
 header("Content-Disposition: attachment; filename=$resumename");
 header("Content-Type: $MIME_Type"); //you can use application/pdf for PDF
 header("Content-Transfer-Encoding: binary");