테스트 사이트 - 개발 중인 베타 버전입니다

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

MRM 11개월 전 조회 1,975

이미지 게시판에 이미지를 올리면 첫번째 게시물 번호가  No. 로 출력됩니다. 해당 글의 이미지 파일명을 $upload[$i]['file'] = $bo_table . '_' . abs($wr_num) . '_' . $mb_id

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

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

11개월 전

그누보드 버젼이 무엇인지 모르겠으나 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 사용

 

 

 

 

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

MRM
11개월 전

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

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

[code]
$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);
[/code]

이렇게 하면 될까요?

댓글을 작성하려면 로그인이 필요합니다.

glitter0gim
11개월 전

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

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

 

/bbs/write_update.php

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

기존 코드

</p>

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

<p>

수정 코드

$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;

}</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

11개월 전

아래의 내용을 한번 참고를 해보세요.

 

$unique_id = uniqid(); $upload[$i]['file'] = $bo_table . '_' . $wr_id . '_' . $unique_id . '_' . $mb_id;

 

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인