2012-09-18 2 views
0

사용자가 파일을 다운로드 할 수있는 함수를 만들려고합니다. 파일을 다운로드하기 위해 버튼을 클릭하면이 함수가 호출되며 "헤더 정보를 수정할 수 없습니다 - 이미 보낸 헤더"오류가 발생합니다.헤더가 이미 전송되었습니다. PHP의 함수에서 파일을 다운로드 중입니다.

내가 아는 바로는 "헤더가 이미 전송되었습니다 ..."오류가 공백으로 인해 발생했지만 아무 것도 찾을 수없는 것 같습니다. 내가 뭔가를 생각하지 않고있어? 페이지의 유일한 기능은 아닙니다. 특별한 방법으로 페이지를로드해야합니까?

function serveFile($fileID){ 
    $sql = mysql_query("select filename from files where id = '$fileID'"); 
    $file = mysql_fetch_array($sql); 

    header('Content-type: text/plain'); 

    header('Content-Disposition: attachment; filename="'.$file['filename'].'" '); 

    readfile('/user_files/'.$fileID.' '); 
} 

업데이트 - 내가이 일을하는 데, 팁 주셔서 감사합니다. 함수 호출을 내 페이지의 맨 위로 옮겼습니다.

+0

이이 ** 파일의 ** 최고입니다 :

제비에 대한 자세한 내용을이 보여? 이 전에 인쇄하는 html 또는 문자가 있으면 오류가 발생합니다. –

+1

이 오류는 PHP가 오류 메시지를 표시하는 것과 같은 다른 출력으로 인해 발생할 수도 있습니다. 고대의 mysql_ * 함수로 새로운 코드 작성을 중단하십시오. 그들은 더 이상 유지되지 않으며 커뮤니티는 [비추천 프로세스]를 시작했습니다 (http://news.php.net/php.internals/53799). 대신 준비된 구문을 배우고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/mysqli)를 사용해야합니다. 만약 당신이 배울 점이 있다면, 여기 [PDO 관련 튜토리얼] (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers). – DCoder

+0

@iight no, 이것은 내 파일의 맨 위에 있지 않습니다. 나는 그것을 옮겨야한다고 생각하고 있나? 이것은 클래스의 일부입니다. 선언해야 할 몇 가지 사항이 있다고 생각하면 여전히 작동합니까? – user1406951

답변

관련 문제