에디터 사용시 임시파일 관리하는 방법 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

에디터 사용시 임시파일 관리하는 방법 정보

에디터 사용시 임시파일 관리하는 방법

본문

에디터에서 이미지 첨부를 하게 되면, data 폴더 안에 '/cheditor4/년월' 이런식으로 폴더를 만들고,
그 폴더에 파일들을 전부 저장합니다. 그러나, 에디터에 첨부했다가 삭제한 파일들도 그대로 남아있고,
게시글 삭제시에도 업로드 된 파일들이 그대로 남아있게 됩니다.
파일명도 DB에 저장하지 않기 때문에, 임시파일이나 삭제된 파일들 정리도 쉽지 않습니다.
그래서 에디터에서 등록하는 파일들을 게시판별 data 폴더로 이동을 하고,
에디터에서 사용하는 폴더는 아예 사용을 하지 않는게 파일관리가 용이할 것 같아, 몇군데 수정을 해봤습니다.
제가 원래 그누보드 원본 파일은 잘 안건드리고, 스킨 폴더 안에서만 처리하는 걸 좋아라 합니다.^^

수정 부분은 스킨폴더안의
write_update.skin.php
delete.skin.php
delete_all.skin.php
이렇게 3가지 입니다.

1. write_update.skin.php에 추가
---------------------------------------------------------------------------------------------------
$ym = date("ym", $g4[server_time]);
$cheditor_path = $g4[path]."/data/".$g4[cheditor4]."/".$ym."/"; // 에디터에서 생성하는 폴더

$board_path = $g4[path]."/data/file/".$bo_table."/".$wr_id."/"; // 각 게시판별 data 폴더 안에 wr_id 폴더 생성
@mkdir($board_path, 0707);
@chmod($board_path, 0707);

$row = sql_fetch(" select wr_content from $write_table where wr_id = '$wr_id' ");
preg_match_all("/http:\/\/(.*)\.(jp[e]?g|gif|png)/i", $row[wr_content], $match, PREG_SET_ORDER); // wr_content 내용에서 이미지 주소만 추출

 // 에디터에서는 이미지 주소가 절대경로로 나옵니다. 파일 이동 후 wr_content 내용 중 이미지 주소를 상대경로로 변경합니다.
for ($i = 0; $i < count($match); $i++)
{
preg_match("/(.*)[\/](.*)/i", $match[$i][0], $file);
$cheditor_file = $cheditor_path.$file[2];
$board_file = $board_path.$file[2];
@copy($cheditor_file, $board_file); // 파일을 data 폴더로 이동
@unlink($cheditor_file); // 에디터에서 저장했던 파일을 삭제
sql_query(" update $write_table set wr_content = replace(wr_content, '$file[0]', '$board_file') where wr_id = '$wr_id' "); // wr_content 내용 중 절대경로를 상대경로로 변경
}

// 에디터에 첨부했다가 지워진 이미지를 data 폴더에서도 삭제
preg_match_all("/(.*)\/(.*)\.(jp[e]?g|gif|png)/i", $row[wr_content], $match, PREG_SET_ORDER);
$content_file = array();
$file_list = scandir($board_path);
for ($i = 0; $i < count($match); $i++) { $content_file[$i] = $match[$i][2].".".$match[$i][3]; }
for ($i = 0; $i < count($file_list); $i++) { $file = $file_list[$i]; if (!in_array($file, $content_file)) { @unlink($board_path.$file); } }
---------------------------------------------------------------------------------------------------

2. delete.skin.php에 추가
---------------------------------------------------------------------------------------------------
$board_path = $g4[path]."/data/file/".$bo_table."/".$wr_id."/";
$file_list = scandir($board_path);
for ($i = 0; $i < count($file_list); $i++) { @unlink($board_path.$file_list[$i]); }
@rmdir($board_path);
---------------------------------------------------------------------------------------------------

3. delete_all.skin.php에 추가
---------------------------------------------------------------------------------------------------
for ($i = count($tmp_array) - 1; $i >= 0; $i--)
{
$board_path = $g4[path]."/data/file/".$bo_table."/".$tmp_array[$i]."/";
$file_list = scandir($board_path);
for ($j = 0; $j < count($file_list); $j++) { @unlink($board_path.$file_list[$j]); }
@rmdir($board_path);
}
---------------------------------------------------------------------------------------------------

이렇게 스킨폴더내 3개 파일 수정하시면, 에디터 임시파일 걱정없이 사용하실 수 있으실 거에요.^^
참고로, 저는 그누보드 4.37.08 - CHEditor 5.1를 사용하고 있습니다.
그누보드 원본에서 에디터 관련부분은 아무것도 손대지 않은 상태에서 수정한 내용입니다.
추천
8

댓글 10개

정규식을 바꾸니 크롬에서도 잘됩니다. 참고하세요~
/http:\/\/(.*)\.(jp[e]?g|gif|png)/i 를
/http:\/\/(\S*)\.(jp[e]?g|gif|png)/i 로 바꿔보세요~
사용중인 게시판스킨이 10개가 넘는데 그누부드 원본파일 건드려서 사용할 수있는 방법은 없을까요?

다 추가하자니 너무 분량이 많고 앞으로 스킨교체도 적당히 있을것 같아서 그럽니다.

원본에서 처리하는방법좀 알려주시면 감사하겠습니다.
에디터가 wr_id값으로 폴더를 생성하기에 폴더가 무한으로 생성이 되는데요
나중에 수천개의 폴더가 만들어질것 같습니다.
이것들좀 적어지게 할수 없을까요? 체디터 원본처럼 월별로만 되어도 갯수가 엄청나게 줄을거같은데요
어떻게 수정해야하는지좀 알려주시면 정말 감사하겠습니다.
전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

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