다국어 언어 게시판에서 파일 중복 업로드 방지

다국어 언어 게시판을 만들었습니다.

영어와 한국어 모두 같은 게시판 테이블을 씁니다.

그런데 이게 문제점이 영어 게시글에서 첨부파일을 올리고,

한국에 게시글에서 또 해당하는 첨부파일을 올리면,

data/file/게시판 폴더안에 중복된 파일이 두개가 됩니다.

board_file 테이블에 만약 새로 업로드 하고자 하는 파일과 bf_soure, bf_filesize, bf_width, bf_height 등이 모두 같은 파일이 이미 존재하면

그 이미 존재하는 row 의 값을 간단하게 새로 업데이트 하고자 하는 row 에 복사 하는 식으로

하고 싶습니다.

write_update.php 를 좀 손보면 될거서 같은데, 머리가 터질것 같네요...ㅜ.ㅜ

도와주세요.

감사합니다.
|

댓글 3개

간단하게 할수 있는 방법은 영문/한글 스킨이 다르다면
영문 스킨 write.skin.php 에 hidden input 을 하나 추가합니다.

<input type='hidden' name='engboard' value='1' >

영문보드에서 글쓰면 write_update.php 에 $_POST['engboard'] = '1'이 됩니다.



write_update.php 파일 가변파일 업로드 부분 소스중 (200번째줄 근처)

$upload[$i][file] = abs(ip2long($_SERVER[REMOTE_ADDR])).'_'.substr($shuffle,0,8).'_'.str_replace('%', '', urlencode($filename));

위와 같이 첨부파일 이름을 생성해 주는데 이부분을 $_POST['engboard'] 값이 있다면 다르게 생성해 주도록 수정해 줍니다.

if($_POST['engboard']){
$upload[$i][file] = 'engboard_'.abs(ip2long($_SERVER[REMOTE_ADDR])).'_'.substr($shuffle,0,8).'_'.str_replace('%', '', urlencode($filename));
}else{
//원본소스
$upload[$i][file] = abs(ip2long($_SERVER[REMOTE_ADDR])).'_'.substr($shuffle,0,8).'_'.str_replace('%', '', urlencode($filename));
}


위처럼 수정하면 한글로 게시물 작성시는 그대로 첨부파일이 올라가고
영문보드로 게시물 작성하면 첨부파일 앞에 engboard_ 가 붙습니다.
답변 감사합니다 진서기님.
죄송합니다. 제가 원하는 것을 명확하게 하지 못해서 잘못 이해하신 듯 싶습니다..
위 방법은 중복 업로드를 하기 위한 방법이 아닌가 싶고요,
제가 원하는거는 a.jpg 라는 파일이 있을때,

영어 게시판에서 업로드를 하면
23492349823_a.jpg 라는 파일이 올라갑니다.

한글 게시판에서 똑같은 업로드를 하면
45830495893_a.jpg 라는 파일로 올라갑니다.

그런데 결국 두개의 파일이 같은거라 디스크 공간만 차지하기 때문에,

board_file 테이블에서 업로드 하기 전에 이미 존재하는 파일이면

영어 게시판에서 올린 파일의 정보를

한글 게시판에서 올렸을 시 파일 업로드는 하지 않고 해당 row 를 영문 게시글의 bo_file row 로 부터 카피합니다.


예를들자면

영문 게시판에서

a.jpg 를 업로드 하면

data/file/게시판/23492349823_a.jpg

로 업로드 됩니다.

한글 게시판에서 똑같은 파일인 a.jpg 를 업로드 하면

파일을 업로드 해서 data/file/게시판/45830495893_a.jpg 가 되는게 아니라

bo_file 테이블에서 해당 파일이 있나 검사 후, (이 경우에는 이미 있으므로) 그 wr_id row 의 정보를

카피 해 와서

한글 게시물에서도 23492349823_a.jpg 을 불러오는겁니다.



가능할까요?
//첨부된 파일 검사코드 삽입
//식사 하러 가야되서 생략합니다. ㅠㅠ
//select count(*) from g4_board_file where bf_source='첨부된파일명' and bf_width='너비' and bf_height='높이'; 대충 이런식으로;;

if(같은파일이없으면){
// 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
$error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES[bf_file][error][$i]);

// 올라간 파일의 퍼미션을 변경합니다.
chmod($dest_file, 0606);

//$upload[$i][image] = @getimagesize($dest_file);

}else{
//같은 파일이 있다면 실행될 코드
}



444 라인쯤에 가변파일 DB에 입력 부분

else
{
$sql = " insert into $g4[board_file_table]
set bo_table = '$bo_table',
wr_id = '$wr_id',
bf_no = '$i',
bf_source = '{$upload[$i][source]}',
bf_file = '{$upload[$i][file]}',
bf_content = '{$bf_content[$i]}',
bf_download = 0,
bf_filesize = '{$upload[$i][filesize]}',
bf_width = '{$upload[$i][image][0]}',
bf_height = '{$upload[$i][image][1]}',
bf_type = '{$upload[$i][image][2]}',
bf_datetime = '$g4[time_ymdhis]' ";
sql_query($sql);
}


윗 부분에도 if문을 추가해서

else
{
if(같은파일있으면){
//실행될SQL
//같은 파일 있는지 sql을 이곳에 미리 삽입 또는 윗부분에 삽입해서 아래 sql에 입력해 주세요
$slq= 'insert ~~~~';
}else{

$sql = " insert into $g4[board_file_table]
set bo_table = '$bo_table',
wr_id = '$wr_id',
bf_no = '$i',
bf_source = '{$upload[$i][source]}',
bf_file = '{$upload[$i][file]}',
bf_content = '{$bf_content[$i]}',
bf_download = 0,
bf_filesize = '{$upload[$i][filesize]}',
bf_width = '{$upload[$i][image][0]}',
bf_height = '{$upload[$i][image][1]}',
bf_type = '{$upload[$i][image][2]}',
bf_datetime = '$g4[time_ymdhis]' ";
sql_query($sql);
}//같은파일있으면if 끝
}


삭제등은 생각 안해봤습니다.
완성코드는 힘들것 같고 아래 답변해주실 분이 완성을 ;;

아니면 안되는 부분 다시 질문주세요
댓글을 작성하시려면 로그인이 필요합니다.

그누4 질문답변

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

+
제목 글쓴이 날짜 조회
16년 전 조회 1,297
16년 전 조회 1,465
16년 전 조회 998
16년 전 조회 1,604
16년 전 조회 1,058
16년 전 조회 913
16년 전 조회 1,856
16년 전 조회 2,993
16년 전 조회 1,007
16년 전 조회 1,559
16년 전 조회 1,117
16년 전 조회 1,738
16년 전 조회 977
16년 전 조회 1,364
16년 전 조회 1,559
16년 전 조회 2,718
16년 전 조회 2,032
16년 전 조회 1,980
16년 전 조회 1,616
16년 전 조회 1,567