php 에서 파일다운로드하는 방법은 다음과같이 Header 를 이용하여야 한다.

오늘 삽질을 좀 했는데 계속 헤더 앞에 다른 문자가 출력되어있다는 에러가 나는 것이다...

도데체 뭘까... 한 시간의 삽질 끝에... <?  <- 요거 앞에 한칸의 공백이 있는 것을 발견했다....

Header 를 사용할 때는 그 앞에 어떤 것도 출력되면 안된다.

이 소스를 개발할 때는 이 것을 주의해야한다.

꼼꼼하게 앞에 빈칸이 없도록 해야할 것을 잊지말자.


<?
class filemodel extends model
{
    function get_mode()
    {
        $file_id = $this -> get_check("file_id", "plus");
        $file = mysql::singleton("file") -> get_file_name($file_id);
        $file_url = $file['file_url'];
        $file_name = $file['file_name'];
        $f_name = basename($file_name);
        $downloadPath = $file_url;
        Header("Content-Type: file/unknown");
        Header("Content-Disposition: attachment; filename=". $f_name);
        Header("Content-Length: ".filesize("$downloadPath"));
        header("Content-Transfer-Encoding: binary ");
        Header("Pragma: no-cache");
        Header("Expires: 0");

        flush();


        if ($fp = fopen("$downloadPath", "r")) {
            print fread($fp, filesize("$downloadPath"));
        }
        fclose($fp);
    }
}
?>

참고로 링크는 이런식으로 하면 되겠지?

<a href="/api/index.php?model=file&mode=get&file_id=<?=$value['file_id1']?>&view=script" ><?=$value['file1']['file_name'];?></a>

화이링~^^

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon 겨울 2008.12.10 14:22  댓글주소  수정/삭제  댓글쓰기

    불로그 글 작성에 도움이 되실까 해서 정보를 하나 알려 드리고자 합니다. 무료로 고용량 파일을 배포해 주는 사이트가 하나 생겼습니다.
    MAXFREE라고 하는데 (www.maxfree.co.kr) 거기 가시면 고화질 동영상이나 고용량 파일들을 무료로 배포하실 수 있습니다. 최근 제가 여기에 계정 만들어서 1GB급 동영상을 스트리밍으로 카페 회원들과 공유 중인데 정말 좋습니다. 올리는 사람도 무료이고, 보는 사람도 무료라서 웹하드처럼 다운로드 받는 사람들이 돈 낼 필요가 없는 것 같습니다. 다만 기업 회원들만 된다고 해서 저희 식당 사업자 등록증 번호로 계정 만들었습니다. ^^ 하여간 여기 불로그에 올라오는 글들과 연관성이 있을 것 같아서 알려드리고 갑니다.