다국어 언어 게시판에서 파일 중복 업로드 방지
다국어 언어 게시판을 만들었습니다.
영어와 한국어 모두 같은 게시판 테이블을 씁니다.
그런데 이게 문제점이 영어 게시글에서 첨부파일을 올리고,
한국에 게시글에서 또 해당하는 첨부파일을 올리면,
data/file/게시판 폴더안에 중복된 파일이 두개가 됩니다.
board_file 테이블에 만약 새로 업로드 하고자 하는 파일과 bf_soure, bf_filesize, bf_width, bf_height 등이 모두 같은 파일이 이미 존재하면
그 이미 존재하는 row 의 값을 간단하게 새로 업데이트 하고자 하는 row 에 복사 하는 식으로
하고 싶습니다.
write_update.php 를 좀 손보면 될거서 같은데, 머리가 터질것 같네요...ㅜ.ㅜ
도와주세요.
감사합니다.
영어와 한국어 모두 같은 게시판 테이블을 씁니다.
그런데 이게 문제점이 영어 게시글에서 첨부파일을 올리고,
한국에 게시글에서 또 해당하는 첨부파일을 올리면,
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 끝
}
삭제등은 생각 안해봤습니다.
완성코드는 힘들것 같고 아래 답변해주실 분이 완성을 ;;
아니면 안되는 부분 다시 질문주세요