그누보드4 - 플래시를 이용한 멀티업로드 > Board Tip

본문 바로가기
 

그누보드4 - 플래시를 이용한 멀티업로드

페이지 정보

작성자 휴먼 댓글 0건 조회 16,868회 작성일 12-01-27 15:51

본문

그누보드에서 멀티업로드를 구현한 분이 계시네요.

정보 공유,
고맙습니다.

위의 링크를 클릭하여 참고하시기 바랍니다.

아래에 그 원문을 복사해 올립니다.

 

그누보드4 - 플래시를 이용한 멀티업로드
  글쓴이 : 알릭 (알릭)     날짜 : 06-09-16 18:19     조회 : 17511     추천 : 0    
  트랙백 & 고유주소 : http://www.alik.info/gnu/bbs/tb.php/alik/130
글자크기 + - · 줄간격 + -

건호랩님께서 만드신 플래시를 (구경가기)

    php 버전으로 바꾸고 나서 (이것도 보러가기

        그누보드4에 적용해보았습니다.
    
            한번에 여러개의 화일이나 이미지를 업로드 하시는 분들에게 유용할겁니다.
샘플은 이곳에 적용되어있으니 글쓰시면서 느껴보시길....3.gif

장점:

  • 업로드 갯수 무제한
  • 한번에 여러개의 화일을 선택해서 업로드 가능 (주요 기능!!)
    - 찾아보기를 계속 눌르지 않아 되는 편리함 ^^
  • 용량 제한, 화일의 확장자 제한 가능
  • 알디터와 같이 사용시 업로드한 화일을 바로 본문에 넣을수 있음 (은근히 테터 스럽네요..ㅋㅋ)
  • 업로드된 화일들중 본문에 삽입된 화일은 글보기에서 목록에 나오지 않고 본문에 삽입되지 않은 화일들만 목록으로 나옴
  • 글보기시 이미지 와 기타 화일들을 분리하여 목록으로 출력함.

설치법:

1. multiUpGnu4.zip 을 다운받으신후 풀어보시면 multiUp 이란 폴더가 있고 그안에 화일들이 있습니다.

2. config.php 를 여시고 주석을 참고하시면서 상단에 설정을 마치고 저장합니다.

    변수 이름들이 제로보드용으로 만든팁에서 수정하지 않았습니다. 신경쓰지 마시길.
    그리고 그누보드의 절대경로는 동봉된 abspath.php 를 그누보드폴더에 넣으시고 브라우져 상에서 실행하시면 나오는 경로입니다.

3. config.xml 을 여시고 역시 주석을 참고하시면서 설정을 마치고 저장합니다.

    이때 중요한건
    <allowDomain>http://계정</allowDomain> 와
    <uploadUrl>http://계정/그누보드/multiUp/upload.php</uploadUrl> 입니다.
    본인의 계정 주소로 잘 바꿔넣어주세요.


3-1. uploader.php 에서 현재 알디터와 함께 사용될때 필요한 [본문삽입] 버튼과 함수는 주석처리 되어있습니다.
      
    *알디터를 사용중이시라면(뽀뽀 쪽~ ㅋㅋ)... 주석제거 해주세요.

제거법:
    function toAlditor() {...} 함수를 감싸고 있는 /* 와 */ 제거
    [본문삽입] 링크를 감싸고 있는 <!-- 와 --> 제거

3-2. [본문삽입] 을 통해 업로드된 이미지들의 리사이즈를 위해~

3-1에서 주석제거하신 uploader.php 에 있는 toAlditor() 함수안에서..

html = '<img src="'+hrefUrl+url+'" border="0" />'; 를 찾아서 아래처럼 수정하십시오.

html = '<img src="'+hrefUrl+url+'" border="0" name="target_resize_image[]" /><br /><br />';

4. multiUp 폴더를 그누보드가 설치된 폴더 안에 업로드해 주세요.

5. config.xml 은 그누보드의 bbs 폴더에 넣어주세요.

6. 그누보드/data 폴더안에 multi 라는 폴더를 하나 만듭니다. 그리고 권한을 777 로 주십시오.
(multi 대신 다른 이름의 폴더를 만드셨다면
config.php 에서 $saveFolder =  "data/multi/"; 를
$saveFolder =  "data/새로만든폴더이름/"; 으로 바꾸시면 됩니다.)

7. 본팁은 게시판의 여분필드의 마지막 wr_10 을 이용합니다.
관리자 페이지에서 게시판의 여분필드중 10번째꺼의 이름을 uploaderUniq 라고 넣어주십시오.
(주의! 값이 아닌 이름입니다, 다시말해 왼쪽 칸에 넣으시라는...)
만약 wr_10 이 사용중이라면, 원하는걸로 바꾸신후 모든 화일과 수정법에 나오는 wr_10 을 모두 알맞게 수정하셔야 합니다.)

그누보드 스킨 화일수정:

1. 스킨의 write.skin.php

업로드플래시와 목록이 표시되길 원하시는 곳에 아래와 같이 넣어주세요

<? include "../multiUp/uploader.php";?>

그누보드 기본스킨을 기준으로한 샘플:

<? if ($is_file) { ?>
<tr>
    <td style='padding-left:20px;'>· 멀티업로드</td>
    <td><? include "../multiUp/uploader.php";?></td>
</tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

이제 글쓰기 취소 버튼을 찾아서 아래처럼 바꿔주세요.

<a style="cursor:pointer;" onclick="cancelWrite();"><img id="btn_list" src="<?=$board_skin_path?>/img/btn_list.gif" border=0></a>

스킨마다 취소버튼이 다를겁니다. 이미지로 되어있거나 링크로 되어있거나...버튼일수도 있구요,
뭐로 되어있던간에 기존에 있던 링크나 onclick 을 "cancelWrite();" 로 바꿔주셔야 합니다.

2. 스킨의 view.skin.php

내용이 표시되는 <?=$view[content];?> 를 찾아서 그 왼쪽 또는 오른쪽 (저는 오른쪽에 넣었음)에 다음한줄을 넣어주세여.

<? include "../multiUp/uploadView.php"; ?>

3. 스킨의 write_update.skin.php 의 내용은 다음과 같습니다. 원래 있다면 추가..없다면 만들어서 스킨폴더에 올리세요.

<?PHP
include_once "../multiUp/config.php";
 
if($_POST['del_files']) {
 $delfiles = explode(",",$_POST['del_files']);
 for($i=0; $i<count($delfiles); $i++) {
  unlink($savePath.$_POST['uploaderUniq']."/".$delfiles[$i]);
 }
} $filecount = 0;
if ($rep=@opendir($savePath.$_POST['uploaderUniq'])) {
 while ($file = readdir($rep)) {
  if($file != '..' && $file !='.' && $file !=''){
   $filecount ++;
  }
 }
}

if($filecount == 0 && is_dir($savePath.$_POST['uploaderUniq'])) {
 rmdir($savePath.$_POST['uploaderUniq']);
}
if($filecount == 0) {
 sql_query(" update $write_table set wr_10 = '' where wr_id = '$wr_id' ");
}
if($filecount > 0 && $_POST['uploaderUniq']) {
  sql_query(" update $write_table set wr_10 = '$_POST[uploaderUniq]' where wr_id = '$wr_id' ");
}
?>

4. 그누보드/bbs 폴더의 delete.php

    // 게시글 삭제
    sql_query(" delete from $write_table where wr_parent = '$write[wr_id]' ");

를 찾아서 그 에 다음처럼 넣어주세요.

 $filefolder = $write['wr_10'];
 include "../multiUp/uploadDelete.php";

5. 그누보드/bbs 폴더의 delete_all.php

    // 게시글 삭제
    sql_query(" delete from $write_table where wr_parent = '$write[wr_id]' ");

를 찾아서 그 에 다음처럼 넣어주세요.

 $filefolder = $write['wr_10'];
 include "../multiUp/uploadDelete.php";

다 바꿔서 업로드 하셨으면~ 글쓰기에서 정상작동하는지 확인해주십시오 ^^

부가설명:

1. 업로드된 화일들은 그누보드/data/multi/ 안에 폴더가 생기면서 들어갑니다. 폴더이름은 unix timestamp 로 생성된 숫자들입니다.

2. 기존의 후업로드가 아닌 선업로드 방식이기 때문에 불가피하게 업로드만 되고 사용되지 않는 화일들이 생길겁니다. 그래서 준비했습니다. ^^

    짜잔~ multiUp 폴더에 잘보시면 cleanup.php 가 있습니다. 그 화일을 그누보드설치 폴더로 옮기신후에
    관리자로 로그인후 브라우져에서 계정/그누보드/multiUp/cleanup.php 라고 간간히 생각나실때 실행해주시면 쓰레기화일과 폴더들이 지워집니다.

3. 플래시의 디자인은 건호랩님이 제공하시는 화일을 받아보시면 fla 소스 화일이 있습니다. 그걸 수정하세요.

이상입니다.

 

참고1:
uploader.php 에 보시면 <select style="width:388px; margin-right: 4px;" name=file_list size=3 multiple="multiple"> 라고 있습니다. 보니까 다들 select 에 대한 스타일을 지정하지 않고 쓰시는분들이 많네요.. 그래서 글씨가 좀 크게 보입니다.

<select style="width:388px; margin-right: 4px; font-size:9pt;" name=file_list size=3 multiple="multiple">
처럼 해주시면 보기 좋습니다.

참고2:

접속자가 많은 홈이라면 동시에 같은 순간에 글을 쓰는 사람이 있을 가능성이 있으므로....

uploader.php 에서...

var cook = new Date().getTime();

를 찾아 아래처럼 바꿔주세요.

var cook = new Date().getTime() + (Math.round(9999*Math.random())+1);

[2009-09-21] 추가사항!

기존의 그누보드의 방식으로 포인트 차감도 되고...다운로드 권한도 관리되고...
클릭하면 열기가 아닌 저장으로 처리되게 하고 싶으시면...

아래 화일을 다운받으시고 uploadView.php 는 multiUp 폴더에... downloadMulti.php 화일은 그누보드/bbs 폴더에 넣어주세요.
 
(참고: 업로드후에 본문에 삽입하지 않으셔야 적용되고 삽입하시면 클릭시 그냥 무조건 오픈입니다.)

첨부파일 #1 : multiDownload.zip (3 Kb)

댓글목록

등록된 댓글이 없습니다.

Total 59건 1 페이지
게시물 검색