bootstrip fileinput 멀티업로드 적용한 스킨입니다. > 그누보드5 스킨

그누보드5 스킨

좋은 댓글과 좋아요는 제작자에게 큰힘이 됩니다.

bootstrip fileinput 멀티업로드 적용한 스킨입니다. 정보

게시판 bootstrip fileinput 멀티업로드 적용한 스킨입니다.

첨부파일

g5_multi_upload.zip (397.6K) 194회 다운로드 2020-09-04 09:48:44
테스트한 버전5.4.2.8
호환 가능 버전5.4 이상

본문

부스스트랩 fileinput 플러그인을 이용한 멀티업로드 입니다.

https://plugins.krajee.com/file-input

해당 플러그인은 위 주소에서 확인하실 수가 있습니다.

플러그인 미리보기는 링크를 참조해 주세요

 

테스트url입니다.

http://woodamba.duckdns.org/bbs/board.php?bo_table=multi_upload2

 

- 멀티업로드

- ajax 실시간업로드(chunk 사용안함)

- 파일정렬

- 파일미리보기(워드, 엑셀, 파워포인트, pdf, 이미지, 비디오, 텍스트)

- 크게보기

등 지원합니다.

 

 

테마는 두가지 종류로 작업되어있습니다.

 

chunk 업로드는 제가 귀찮아서 작업을 안했습니다;;하하하하 죄송합니다.

 

정렬은 따로 bf_order_index 컬럼을 추가해서 사용하고 있습니다

 

추가되는 컬럼은 bf_uid, bf_tmp_uid, bf_order_index, bf_temporary 입니다.

자동으로 컬럼이 추가되므로 따로 컬럼추가 작업을 안하셔도 됩니다.

 

뷰페이지에서 파일정렬을 위해서 함수호출을 추가해주셔야 합니다.

$view['file'] = get_fileinput($bo_table, $wr_id); // 기존file변수 오버라이딩

=============================

//get_fileinput는 /extend/fileinput.config.php에 있습니다.

//view.skin.php 상단 적당한곳에 추가 해주시면 될것 같습니다.

=============================

 

쓰기페이지에 히든인풋값을 추가해주셔야 합니다.

<input type="hidden" name="tmp_uid" value="<?php echo $write['uid'] ? $write['uid'] : get_tmp_uid() ?>" />

 

게시판에 지정이 되지않은 파일(예, 파일첨부를 하고 저장을 하지 않고 새로고침을 한경우)은 2일이 지나면 삭제됩니다. add_event('common_header')를 사용하여 호출해주고 있습니다.

 

미리보기는 사용안함, 모두사용, 지정한 확장자만 사용 가능합니다.

사용안함의 경우 아이콘만 나오게 됩니다.

 

getFileType을 호출해주실때 두번째 값에

false는 모두 사용안함 - getFileType($filename, false)

배열은 해당확장자만 사용입니다. - getFileType($filename, ['jpg','gif','mp4','xls'])

두번째 값의 생략은 모두사용입니다. - getFileType($filename);

** getFileType은 fileinput.php과 fileinput_upload.php에서 호출되고 있습니다.

 

해당 소스에서 사용되는 모든 함수는

/extend/fileinput.config.php 에 있습니다.

 

설정에 관련된 파일은

/plugin/bootstrap-fileinput-master/fileinput.php 에 있습니다.

 

부족하지만 많은 피드백 부탁드리겠습니다. 감사합니다.

 

******

폰트어썸과 부스트랩을 사용하고 있습니다.

기존 그누보드의 defualt.css에서 .btn 클래스와 부스스트랩의 .btn이 혼용되어서 여러개 수정하였지만

중복된 클래스명이 어디에서 또 나올지는 저도 잘 모르겠습니다.

그누보드에서 사용하는 폰트어썸보다 해당플러그인에서 사용하는 폰트어썸의 버전이 높습니다. 그래서 그누보드에서 사용하는 일부 아이콘이 안나올 수 있습니다. - 쪽지아이콘은 안나오더라고요 ㅠ_ㅠ

 

Hook를 지원하지 않는 그누보드에서는 사용이 불가능 합니다.

 

 

===========================
수정이력
============================
2019.09.04 01:00
/skin/board/multi_upload/view.skin.php의 상단에 get_fileinput 함수호출 추가
/extend/fileinput.config.php의 fn_write_update_after에 쿼리문 추가

 

2019.09.04 09:50
/plugin/bootstrap-fileinput-master/fileinput.php 컬럼추가 쿼리문 변경

 

 

3076913199_1599099875.2468.png

3076913199_1599099884.502.png3076913199_1599099892.6967.png

3076913199_1599099910.7877.png3076913199_1599099915.9038.png

추천
19

댓글 전체

글쓰기에 이미지가 안올라간다는게 무슨말씀이신지 모르겠습니다.
어떻게 안올라가시는지 자세하게 설명 해주시면 똑같이 테스트 해보겠습니다.
테스트하던중에 본문글에 파일갯수를 적용하지 않는 오류를 발견하여 수정하였습니다. 첨부파일도 수정해서 다시 올렸습니다.
2020.09.04 이전에 다운받으신 분들은 다시 받아주세요.
===========================
수정이력
============================
view.skin.php의 상단에 함수호출 추가

$view['file'] = get_fileinput($bo_table, $wr_id);

-------------------------------------------------------------------------

/extend/fileinput.config.php의 fn_write_update_after함수를 변경해주세요

function fn_write_update_after($board, $wr_id, $w, $qstr, $redirect_url) {
    global $g5;
   
    $tmp_uid = $_POST['tmp_uid'];
    if( !$tmp_uid )
        return false;
   
    $sql = "select max(bf_no) as bf_no from {$g5['board_file_table']} where wr_id='{$wr_id}' and bo_table='{$board['bo_table']}'";
    $row = sql_fetch($sql);
    $max_bf_no = $row['bf_no'];
    if( $max_bf_no > 0 )
        $max_bf_no++;
   
    $sql = "select * from {$g5['board_file_table']} where wr_id=0 and bf_no < 0 and bo_table='{$board['bo_table']}' and bf_temporary='1' and bf_tmp_uid='{$tmp_uid}' order by bf_datetime asc";
    $result = sql_query($sql);
    $file_cnt = sql_num_rows($result);
    for($i=0;$row = sql_fetch_array($result);$i++) {
        $bf_no = $max_bf_no + $i;
        $sql_add = "";
        if( $row['bf_order_index'] < 0 ) {
            $sql_add = ", bf_order_index='{$bf_no}'";
        }
        $sql = "update {$g5['board_file_table']} set wr_id='{$wr_id}', bf_no='{$bf_no}', bf_temporary='' {$sql_add} where bf_uid='{$row['bf_uid']}'";
        sql_query($sql);
    }
   
    // 게시물에 파일갯수를 업데이트 해준다.
    $sql = "select count(*) as cnt from {$g5['board_file_table']} where wr_id='{$wr_id}' and bo_table='{$board['bo_table']}' and bf_temporary=''";
    $row = sql_fetch($sql);
   
    $file_cnt = $row['cnt'];
    $sql = "update {$g5['write_prefix']}{$board['bo_table']} set wr_file = '{$file_cnt}' where wr_id='{$wr_id}'";
    sql_query($sql);
}

===============================
// 게시물에 파일갯수를 업데이트 해준다.
이부분 부터 추가된 부분입니다.
혹시 아래와 같은 에러 메세지 뜨는분 계신가요? ^^;;;

ALTER TABLE `g5_board_file` ADD `bf_uid` varchar(100) NOT NULL DEFAULT '' AFTER `bf_datetime`, ADD `bf_tmp_uid` varchar(100) NOT NULL DEFAULT '' AFTER `bf_uid` ADD `bf_order_index` tinyint(4) NOT NULL DEFAULT 0 AFTER `bf_tmp_uid`, ADD `bf_temporary` varchar(1) NOT NULL DEFAULT '' AFTER `bf_order_index`

1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ADD `bf_order_index` tinyint(4) NOT NULL DEFAULT 0 AFTER `bf_tmp_uid`, ' at line 4

error file : /wn/bbs/write.php
ALTER TABLE `{$g5['board_file_table']}`
                    ADD `bf_uid` varchar(100) NOT NULL DEFAULT '' AFTER `bf_datetime`,
                    ADD `bf_tmp_uid` varchar(100) NOT NULL DEFAULT '' AFTER `bf_uid`,
                    ADD `bf_order_index` tinyint(4) NOT NULL DEFAULT 0 AFTER `bf_tmp_uid`,
                    ADD `bf_temporary` varchar(1) NOT NULL DEFAULT '' AFTER `bf_order_index`


쿼리문을 이렇게 수정해주세요. 제가 쉼표를 빼먹었네요. 죄송합니다. 파일은 업데이트 해놓겠습니다.
수정해서 파일 업데이트 하였습니다.
아니면
/plugin/bootstrap-fileinput-master/fileinput.php의 11줄의 쿼리문을
위에 댓글에 있는 쿼리문으로 수정해서 다시 시도해주시면 됩니다.
불편을 드려 죄송합니다.
아주아주 좋아용.
( ^ _________ ^ ) ===b

ps.

\plugin\bootstrap-fileinput-master\fileinput_upload.php 56라인

수정 전
$total = count($_FILES[$input]['name']); // multiple files

수정 후
$total = count((array) $_FILES[$input]['name']); // multiple files
플러그인 사이트에 아래와 같은 내용이 명시되어 있네요.

"파일 미리보기가 작동하려면 브라우저가 HTML5 FileReaderAPI를 지원해야 한다. 그렇지 않으면 플러그인이 일반 파일 입력으로 자동 디그레이드된다. Internet Explorer의 경우 IE 버전 10 이상을 사용해야 한다. IE9 이하에서는 일반적인 파일 입력으로 작동하며, 다중 파일 선택이나 HTML 5 FileReader API를 지원하지 않는다."

근데 IE는 CSS도 다 깨지더라고요.
혹시 bf_content 파일설명 입력/수정 가능하게 하는 계획 없으신지 조심스럽게 물어 봅니다.~~

계속 테스트 해보고 있는데 작동에 아무 이상 없는거 같읍니다 ~~^^
소소한걸로 파일 삭제시 bf_no 삭제해 버리네요 그누 원본은 유지하면서 카운터에 쓰는거 같던데..
감사합니다 ~
삭제부분은 chunk 업로드지원되게 작업하면서 수정하고 있습니다. chunk지원버전은 근 시일내에 따로 업로드할 계획입니다.
현재 방식은 첨부하는순간 업로드가 되는 작업이여서
bf_content를 사용하려면 파일을 추가한 다음 일괄업로드 방식으로 변경해야 할 것 같습니다. 고려해보도록 하겠습니다.
전체 2,423 |RSS
그누보드5 스킨 내용 검색

회원로그인

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