2012-05-26 2 views
0

이 코딩 스타일을 사용하여 MYSQL 데이터베이스에 파일을 저장했습니다. 정확하게 저장했는지는 확실합니다.저장된 파일을 다운로드하기위한 PHP 헤더 수정하기

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입니다. 어떤 도움을 주셔서 감사합니다!

+0

왜 디버깅을 위해 보내는 헤더를 출력하지 않습니까? - 적절한 헤더가 전송되는지 확인하기 만하면됩니다. 또한 나는 적어도 당신이 Content-Transfer-Encoding : 바이너리 헤더를 추가해야한다고 생각한다. – Andreas

답변

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"); 
관련 문제