다시한번 부탁..파일다운로드 받으면 파일이 깨져 이상한 문자가 나옵니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

다시한번 부탁..파일다운로드 받으면 파일이 깨져 이상한 문자가 나옵니다. 정보

다시한번 부탁..파일다운로드 받으면 파일이 깨져 이상한 문자가 나옵니다.

본문

안녕하세요.

그누보드 사용하고 있는데요. 해결이 잘 안되어 여기까지 왔습니다.
흔히, 한글파일, 엑셀파일, 캐드파일 같은거 게시판의 첨부로 올리 잖아요
그러면 다운로드 클릭하면 무슨 메세지 창이 떠서 "열기" "저장" 이런 표시 창이 뜨잖아요.(위도우창) 그런데 그런창이 안뜨고 다운로드를 클릭하면 곧바로

알수없는 문자 예를들어 %^*^*^*%%&$%^%&ㄲ*(*ㄹ*(*ㅛ*&^%&$& 이런 문자같은게 뜹니다. 파일이 문자형태로 곧바로 나오는것 같습니다

이것때문에 미치겠습니다. 일주일째 헤매고 있습니다. 좀 도움좀 구하겠습니다.

그리고 참고로 UTF 설정 이런거 다 해봤고, 게시판 스킨을 기본스킨으로 해봐도 똑같이 그렇습니다.

서버가 문제가 있나 싶어 같은 서버에 다른 계정의 사이트로 들어가 보니 그쪽을 이러한 에러 없이 잘뜹니다.

뭐가 문제일까요. 고수님들 답변좀 기다리겠습니다. 복많이 받으세요.


아래는 참고로 download.php 파일입니다.


<?
include_once("./_common.php");

// 쿠키에 저장된 ID값과 넘어온 ID값을 비교하여 같지 않을 경우 오류 발생
// 다른곳에서 링크 거는것을 방지하기 위한 코드
if (!get_session("ss_view_{$bo_table}_{$wr_id}"))
    alert("잘못된 접근입니다."); 

$sql = " select bf_source, bf_file from $g4[board_file_table]
          where bo_table = '$bo_table'
            and wr_id = '$wr_id'
            and bf_no = '$no' ";
$file = sql_fetch($sql);
if (!$file[bf_file])
    alert_close("파일 정보가 존재하지 않습니다.");

if ($member[mb_level] < $board[bo_download_level]) {
    $alert_msg = "다운로드 권한이 없습니다.";
    if ($member[mb_id])
        alert($alert_msg);
    else
        alert($alert_msg . "\\n\\n회원이시라면 로그인 후 이용해 보십시오.", "./login.php?wr_id=$wr_id&$qstr&url=".urlencode("board.php?bo_table=$bo_table&wr_id=$wr_id"));
}


// 이미 다운로드 받은 파일인지를 검사한 후 게시물당 한번만 포인트를 차감하도록 수정
$ss_name = "ss_down_{$bo_table}_{$wr_id}";
if (!get_session($ss_name))
{
    // 자신의 글이라면 통과
    // 관리자인 경우 통과
    if (($write[mb_id] && $write[mb_id] == $member[mb_id]) || $is_admin)
        ;
    else if ($board[bo_download_level] > 1) // 회원이상 다운로드가 가능하다면
    {
        // 다운로드 포인트가 음수이고 회원의 포인트가 0 이거나 작다면
        if ($member[mb_point] + $board[bo_download_point] < 0)
            alert("보유하신 포인트(".number_format($member[mb_point]).")가 없거나 모자라서 다운로드(".number_format($board[bo_download_point]).")가 불가합니다.\\n\\n포인트를 적립하신 후 다시 다운로드 해 주십시오.");

        // 게시물당 한번만 차감하도록 수정
        insert_point($member[mb_id], $board[bo_download_point], "$board[bo_subject] $wr_id 파일 다운로드", $bo_table, $wr_id, "다운로드");
    }

    // 다운로드 카운트 증가
    $sql = " update $g4[board_file_table] set bf_download = bf_download + 1 where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$no' ";
    sql_query($sql);

    set_session($ss_name, TRUE);
}

$g4[title] = "$group[gr_subject] > $board[bo_subject] > " . conv_subject($write[wr_subject], 255) . " > 다운로드";

$filepath = "$g4[path]/data/file/$bo_table/$file[bf_file]";
$filepath = addslashes($filepath);
if (preg_match("/^utf/i", $g4[charset]))
    $original = urlencode($file[bf_source]);
else
    $original = $file[bf_source];

@include_once("$board_skin_path/download.tail.skin.php");

if (file_exists($filepath)) {
    if(eregi("msie", $_SERVER[HTTP_USER_AGENT]) && eregi("5\.5", $_SERVER[HTTP_USER_AGENT])) {
        header("content-type: doesn/matter");
        header("content-length: ".filesize("$filepath"));
        header("content-disposition: attachment; filename=\"$original\"");
        header("content-transfer-encoding: binary");
    } else {
        header("content-type: file/unknown");
        header("content-length: ".filesize("$filepath"));
        header("content-disposition: attachment; filename=\"$original\"");
        header("content-description: php generated data");
    }
    header("pragma: no-cache");
    header("expires: 0");
    flush();

    if (is_file("$filepath")) {
        $fp = fopen("$filepath", "rb");

        // 4.00 대체
        // 서버부하를 줄이려면 print 나 echo 또는 while 문을 이용한 방법보다는 이방법이...
        //if (!fpassthru($fp)) {
        //    fclose($fp);
        //}

        while(!feof($fp)) {
            echo fread($fp, 100*1024);
            flush();
        }
        fclose ($fp);
        flush();
    } else {
        alert("해당 파일이나 경로가 존재하지 않습니다.");
    }

} else {
    alert("파일을 찾을 수 없습니다.");
}
?>

댓글 전체

header가 깨져서 나오는 현상 같습니다.
download.php 는 문제가 없는듯 보이고 다른부분에서 코드를 추가 수정하면서
header 관련 문제가 생긴듯 한데요.


전체 에러 메세지중 상단 부분의 에러 부분을 긁어서 보여 주시거나
다운로드 테스트가 가능한 정보를 알려 주세요.
제 경험상 가장 의심가는 부분이 다운로드시 에러가 나온 시점을 기준으로 하여
extend/또는 lib/ 내의 파일들을 추가,수정을 한적이 있다면 살펴 보세요.
헐랭이님 관심감사합니다.

주소는 http://www.nicefence.co.kr/V1/bbs/board.php?bo_table=cu03

여기 자료실에서 도면 다운로드를 클릭하시면 에러메세지가 나옵니다.
좀 봐 주세요. 고맙습니다.^^
현재 에러의 상태로 보면 head.sub.php 에서 아래의 코드를 주석 처리나 삭제를 한듯 보이네요.
주석처리나 삭제를 한 경우라면 아래의 코드를 원상복구를 시켜 보세요.

// 캐쉬의 내용을 가져옴. 완전한지는 검증되지 않음
header("Content-Type: text/html; charset=$g4[charset]");
$gmnow = gmdate("D, d M Y H:i:s") . " GMT";
header("Expires: 0"); // rfc2616 - Section 14.21
header("Last-Modified: " . $gmnow);
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: pre-check=0, post-check=0, max-age=0"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
헐랭이 님 head.sub.php 에 그내용 그대로 다 나와있고, 주석처리도 안되어 있습니다.

헐랭이님꺼 그대로 복사해서 지우고 다시 해도 마찬가지 입니다. ㅠ.ㅠ
아... 이일을 어떻게 해야 할까요...
헐랭이님 정말 감사합니다.
전화로 친절한 답변 ^^

그런데 카테고리별 최근게시물 불러오는 파일에
<?=latest_ca("basic-1", "cu03", 100, 50,"경계용휀스");?>  은 어떻게 include 시켜야 합니까.
자꾸 물어봐서 죄송합니다.
드디어 완벽한 해결 봤습니다.
저와 같은 에러나는 분들을 위해 정리 하겠습니다.

우선 extend에 저장된 cate_latest.lib.php 파일을 lib/아래로 옮긴다음

옮긴페이지에 아래와 같이 인클루드 해주고 나서

<? include_once("$g4[path]/lib/cate_latest.lib.php");?>
<?=latest_ca("basic-1", "cu03", 100, 50,"경계용휀스");?> 이렇게 하니까 잘됩니다.

헐랭이 님 다시한번 감사합니다.
cate_latest.lib.php <-이 파일을 extend 에 업로드시 코드 내용중

<?

내용

?>

에서 첫부분과 마지막 부분에 공백이 있으면 에러가 나오게 됩니다.
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT