파일명에 wr_num 포함시키기 질문

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
파일명에 wr_num 포함시키기 질문

QA

파일명에 wr_num 포함시키기 질문

답변 4

본문

이미지 게시판에 이미지를 올리면 첫번째 게시물 번호가 
No. <span><?= ($list_item['wr_num'] * -1) ?></span>
로 출력됩니다.

해당 글의 이미지 파일명을
$upload[$i]['file'] = $bo_table . '_' . abs($wr_num) . '_' . $mb_id

(파일명 : 게시판이름_게시물번호_작성자아이디)
위에처럼 바꿨는데 가끔씩 abs($wr_num) 부분이 0번째 게시물이 아님에도 0으로 출력되면서 다른 게시글과 꼬이는 현상이 발생됩니다. (게시물번호는 정상적으로 출력되고 파일명만 0으로 되는데, 해당 게시물을 삭제하고 다시 올리면 정상 출력됩니다. 랜덤하게 파일명이 "게시판이름_0_작성자아이디" 로 저장돼요.)
혹시 파일명에 게시물 번호가 유지되면서 문제 해결할 수 있는 방법이 있을까요?
 

이 질문에 댓글 쓰기 :

답변 4

※ wr_num 대신 wr_id를 사용하는 방식으로, wr_id가 없는 경우를 대비한

  예외 처리 코드를 추가하는 방법으로 처리하여 보세요.

 

/bbs/write_update.php

 - wr_id를 사용하여 이미지 파일 이름을 수정하는 코드

기존 코드


$upload[$i]['file'] = $bo_table . '_' . abs($wr_num) . '_' . $mb_id;

수정 코드


$wr_id = isset($write['wr_id']) ? $write['wr_id'] : null;
if ($wr_id) {
    $upload[$i]['file'] = $bo_table . '_' . $wr_id . '_' . $mb_id;
} else {
    $upload[$i]['file'] = $bo_table . '_unknown_' . $mb_id;
}

문제점을 찾았습니다.
업로드 이후 이미지를 수정하게 되면 파일명인 abs($wr_num) 값이 0으로 초기화 됩니다.
혹시 이미지 수정해도 파일명인 abs($wr_num) 값이 유지 되게 할 수 있는 방법이 있을까요?

이미지 업로드 후 수정할 때 abs($wr_num) 값이 0으로 초기화되는 문제는
이미지 수정 과정에서 wr_num 값이 새로 갱신되거나 초기화되기 때문입니다.
이를 해결하려면 이미지 수정 시 기존 파일명을 유지하도록 처리해야 합니다.

업로드된 파일의 정보(파일명 포함)를 g5_board_file 테이블에 저장하고,
수정 시 이 값을 기반으로 처리합니다.


$existing_file_name = $upload[$i]['file']; 
$file_parts = explode('_', $existing_file_name); 
$existing_wr_num = isset($file_parts[1]) ? abs((int)$file_parts[1]) : $wr_num; // wr_num 유지

$new_file_name = $bo_table . '_' . $existing_wr_num . '_' . $mb_id;

move_uploaded_file($_FILES['file']['tmp_name'], $upload_path . '/' . $new_file_name);


이렇게 하면 될까요?

그누보드 버젼이 무엇인지 모르겠으나 wr_num값을 미리 구해서 입력하는 방식이

문제가 있어 어느 시점 부터 변경 되었습니다

다음 처럼 주석처리 되어있고 다음과 같이 되어있을 겁니다

//$wr_num = get_next_num($write_table);

$wr_num = 0; 

쿼리 코드 내에서 wr_num값을 생성합니다

즉 wr_num을 등록 화일 이름에 사용할 수 없습니다

다음처럼 wr_id로 설정하세요

$upload[$i]['file'] = $bo_table . '_' . $wr_id. '_' . $mb_id

그런데 첨부 화일을 하나만 사용하는가요? 이상하게 사용하는군요

======

예전 버젼이라 $wr_num = get_next_num($write_table); 을 사용하고 있고

처음 저장시에는 잘 되고 있다면 수정시에는 다음 처럼 하면 됩니다

수정시에는 wr_num을 별도 생성하지않으니 등록 된 값을 사용하도록 해야 합니다

if($w == 'u') $wr_num = $write['wr_num']; //이미 저장된 wr_num 사용

 

 

 

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 128
© SIRSOFT
현재 페이지 제일 처음으로