첨부파일 실제로 존재하는지 어떻게 확인해요?

첨부파일 실제로 존재하는지 어떻게 확인해요?

QA

첨부파일 실제로 존재하는지 어떻게 확인해요?

본문

서버를 옮기면서 파일들이 많이 누락됐는데요

내용에 엑박뜨는게 많아서 

내용부분 뿌려줄떄 실제 존재하는 파일만 뿌려주려고하느데 어딜봐야할지 모르겠네요..

 

function get_file($bo_table, $wr_id) 여기부분을 만져야하는건지..

 

썸네일 함수를 만져야하는건지..

 

아시는분 조언좀  부탁드립니다

이 질문에 댓글 쓰기 :

답변 2

thumb-2010081265_1765387265.7152_730x325.png

 

view.skin.php 중간에 보시면  이렇게 첨부파일과 본문에서 이미지를 뿌려주는 구문이 있습니다.

여기에

 


<?php
// 파일 출력
$v_img_count = count($view['file']);
if($v_img_count) {
    $file_output = '';
    foreach($view['file'] as $view_file) {
        $file_path = G5_DATA_PATH.'/file/'.$board['bo_table'].'/'.$view_file['file'];
        if(file_exists($file_path)) {
            $file_output .= get_file_thumbnail($view_file);
        }
    }
    
    if($file_output) {
        echo "<div id=\"bo_v_img\">\n";
        echo $file_output;
        echo "</div>\n";
    }
}
?>

 

파일쪽은 이렇게 하면되고

본문 에디터 내에 이미지는

 


<!-- 본문 내용 시작 { -->
<div id="bo_v_con">
<?php
$content = get_view_thumbnail($view['content']);
// 본문 내 img 태그에서 없는 파일 제거
$content = preg_replace_callback(
    '/<img[^>]+src=["\']([^"\']+)["\'][^>]*>/i',
    function($match) {
        $src = $match[1];
        
        // 상대경로를 서버 경로로 변환
        if(strpos($src, G5_DATA_URL) !== false) {
            $file_path = str_replace(G5_DATA_URL, G5_DATA_PATH, $src);
        } else if(strpos($src, '/data/') !== false) {
            $file_path = G5_PATH . $src;
        } else {
            return $match[0]; // 외부 이미지는 그대로 유지
        }
        
        // 파일 존재하면 원본 반환, 없으면 빈 문자열
        return file_exists($file_path) ? $match[0] : '';
    },
    $content
);
echo $content;
?>
</div>
<!-- } 본문 내용 끝 -->

 

이렇게 처리하면될거에요..

db 에 데이터가 있어도 실제 서버에 파일이 없다면 출력되지 않습니다.

질문의 의도에 복붙방식이 아닌

업로드된 파일이 왜 이렇게 존재하는지 개념적인 설명을 해드리겠습니다.

 

 

1. DB상의 파일정보 확인

 

파일이 존재한다는것은 업로드를 기준으로 판단하면

 

g5_board_file 이라는 테이블에

bo_table 필드가 '게시판의ID'값이고

wr_id 값이  글의 번호 입니다.

이 내용이 해당 '게시판Id'의 글 번호와 연결됩니다.

g5_write_게시판ID

테이블에서

wr_id가 글의 고유정보이고

 

wr_id가 같은 게시판ID가 같은 정보로 조회를하면

 

파일목록을 확인가능합니다.

 

그러면

 

2. 서버상의 실제파일 존재여부

 

서버상의 

/data/file 하위에는

게시판id별로 디렉토리가 생성되서

그 하위에 실제 파일이 들어가 있습니다.

 

실제 업로드된 파일명과 게시판업로드된파일정보(DB)의 값은

 

g5_board_file 테이블에서

bf_file값으로 매핑하면 실제 파일과 연결가능하고

업로드시에 이름은 bf_source 라는 명칭으로 기록되어있습니다.

 

3. 파일명의 업로드시 변경되는 원리

 

참고로, 왜 bf_source로 업로드가 안되는가? 라는 생각을해보면

파일명중복때문입니다.

 

같은 테이블에 '홍길동'과 '강감찬'이가 

둘다 같은패턴으로 

'그림.jpg'라는 파일을 둘다 업로드했다면

어떤 그림이 '홍길동' 이올린것이고, '강감찬' 이 올린것인지  구분을 못하겠죠

 

이걸 판단하기위해서 고유이름으로 저장하고

다운로드시에 변환시키는 방법으로 사용됩니다.

 

------------

 

위 내용들을 참고하셔서 다른분들의 답변

혹은 직접 찾아보시면 도움이 되실겁니다.

SQL을 조회하거나

소스분석은 의존하시기보다 직접 시도해보시는게 가장 좋은 배움이라고 생각하고

SQL의 방법이 부족하시면 별도의 질문으로 해당 요소별로 답을 얻으시는게 바람직해 보입니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 129,664 | RSS
QA 내용 검색

회원로그인

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