bootstrip fileinput 멀티업로드 chunk 지원버전 > 그누보드5 스킨

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

그누보드5 스킨

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

bootstrip fileinput 멀티업로드 chunk 지원버전 정보

게시판 bootstrip fileinput 멀티업로드 chunk 지원버전

첨부파일

g5_multi_upload_chunk.zip (1.3M) 159회 다운로드 2021-01-04 11:49:06
테스트한 버전5.4.2.8
호환 가능 버전5.4

본문

기존버전에서 chunk업로드 가능하게 수정해서 업로드 해드립니다.

chunk(청크)업로드는 하나의 파일을 작은 용량으로 잘라서 여러번 업로드 하는 방식으로 파일업로드제한이 있는 환경(e.g, 웹호스팅)에서 대용량파일을 업로드할때 사용하면 좋습니다.^^

 

기존버전 : https://sir.kr/g5_skin/39529

 

수정내역

- 파일등록할때 bf_no와 정렬번호 동기화

- 파일을 삭제할때 원본글의 파일갯수 동기화

- 파일정렬할때 bf_no 동기화

- ajax, chunk로 업로드방식 구분

- 일부 코드 위치변경

 

이정도 될 것 같습니다. 사용은 기존버전하고 똑같이 사용해주시면 됩니다.

업로드방식 변경은

/skin/board/multi_upload_chunk/write.skin.php의

$uploadType을 ajax 또는 chunk로 지정해주시면 맞게 변경이 됩니다.

 

파일설명(bf_content)을 지원하게끔 작업해보았으나 꽤나 큰 작업이어서 보류하였습니다.

 

감사합니다.

 

추가 수정이력

# 2020-09-09 00:18

- chunk업로드일때 bf_no 업로드된 순서대로 정렬되게 수정

# 2020-11-16 18:23

- 1개 업로드하고 수정일때 업로드 안되는점 수정

# 2021-01-04 11:49

- chunk 업로드할때 파일명 세션 초기화 안되는점 수정

- getFileType함수 파일종류 확장자 체크할때 이미지에 대문자JPG추가

추천
11

댓글 전체

소중한 피드백 감사합니다. 수정하여서 다시 파일 첨부하였습니다.
직접 수정하시려면
/extend/fileinput.config.php 72줄
쿼리문중 정렬부분을
order by bf_datetime asc
=>
order by bf_order_index desc, bf_datetime asc

이렇게 수정해주시기 바랍니다.
현재 사용하는 게시판에 이식해서 사용이 가능한가 테스트 중인데.. 작동을 안하네요 ^^;;;
혹시 살펴봐야 할곳이 있을까요? ^^;;;
이런 메세지만..Your browser doesn't have Flash, Silverlight or HTML5 support.
참고로 원본은 잘 됩니다. ^^;;
에러메시지 자체는 플래시나 HTML5를 지원하지 않는 브라우저라는 얘기인데요..음..혹시 크롬이나 파이어폭스에서 접속하셔도 동일하신가요?
완벽하게 작동하는거 같읍니다 ~

<input type="file" name="bf_file[]" id="bf_file_<?php echo $i+1 ?>" title="파일첨부 <?php echo $i+1 ?> : 용량 <?php echo $upload_max_filesize ?> 이하만 업로드 가능" class="frm_file ">

요거 위치좀 알려주시면 감사하겠읍니다

찾아보기 버튼 하단에 고정하고 capture="camera" accept="image/*" 요속성 넣을려고 합니다~
write.skin.php 에 FileUpload로 찾아보시면 보이실꺼예요.
참고로 skin파일에서 bf_file의 이름은 사용하지 않습니다.
hook을 이용해서 파일전송된 후에 따로 처리를 해줍니다.

accept는 옵션으로 따로 지정해주셔도 됩니다.
plugin 폴더에
/js/fileinput.config.js 5줄
/*allowedFileTypes: ['image'],
allowedFileExtensions: ['jpg','jpeg','gif'],*/

또는

plugin 폴더에
/fileinput.php 52줄에 옵션 넣어주는 부분에 추가로 넣으시면 됩니다.
const fileUpload = setFileInput("FileUpload", {
    language: 'kr',
    allowedFileTypes: ['image'],
    allowedFileExtensions: ['jpg','jpeg','gif'],
....

이렇게요.
감사합니다^^

기존 게시판에서 스킨 변경시 순서에 약간 문제가생깁니다 ~

/extend/fileinput.config.php

131 번째 줄에 bf_no 추가하여 해결 했는데.. 다른곳에 영향을 미치지 않을지 모르겠읍니다.
음..이미 데이터가 있는 상황을 고려하지 않았네요.
이럴때는 bf_order_index가 추가된 후에
bf_order_index가 빈값인 경우 bf_no의 값을 bf_order_index로 넣어주는 작업을 하셔야 합니다.

update {$g5['board_file_table']} set bf_order_index = bf_no where bo_table='사용하는bo_table명' and bf_order_index=''

이런 작업을 해주시면 이어서 사용하시는데 문제 없을꺼예요.

이작업을 안해주셔도 어차피 수정할때마다 bf_no랑 bf_order_index값을 동기화 시키기 때문에 문제 없으리라 사료됩니다.
질문 있어요 근데 uid를 게시판테이블에 넣으려고하는데 어떻게 해야할까요? 스크립트에서 문제인것같은데
게시판 파일테이블은 잘 되는데 옵션을 모르겠어요
/plugin/bootstrap-fileinput-master/fileinput.php 3줄에 보시면

//uid 필드추가
if(!sql_query(" select uid from {$write_table} limit 1", false)) {
    sql_query(" ALTER TABLE `{$write_table}`
                    ADD `uid` varchar(100) NOT NULL DEFAULT '' AFTER `wr_10` ", true);
}

이 쿼리문이 있습니다. write.skin.php에서 플러그인폴더의 fileinput.php을 인크루드 시키면 자동으로 추가해줍니다만.. DB의 설정이 datetime에 관해서 0000-00-00 형식을 지원안하게 되어있으면 DB에서 수동으로 추가해줘야 합니다.

쿼리문에
SET SESSION sql_mode = '';
또는
SET GLOBAL sql_mode = '';

쿼리문과 함께 위의 uid추가하는 쿼리문을 실행해주시면 됩니다.
파일 업로드 테스트 해보니.

chunk/ajax 동일하게 단일파일 약 120M 까지 업로드 됩니다.
현재 개인서버로 기본 스킨 기준 2G(2039M) 세팅 사용되고 있읍니다.

Out of Memory 오류 및 메모리 사용량이 엄청나게 올라갑니다 ~
제가 영상파일 하나 chunk로 업로드 2.5기가 업로드 테스트 하긴 했습니다.
다른 파일도 더 테스트 해보도록 하겠습니다.
보안때문에 chunk파일 업로드할때 token생성해서 보내고있는데 파일이 클수록 토큰생성 호출 횟수도 많아질테니 아무래도 이 영향도 있어 보입니다.
소중한 피드백 너무나 감사합니다.
300~400메가짜리 동영상파일을 chunk로 한꺼번에 첨부하여 업로드 테스트 해봤습니다.
이 과정중에서 별다른 오류나 이상은 발견하지 못하였습니다.
^^ 원인은 모르겠으나 제컴퓨터 한대에서만 안되고 있읍니다
다른 컴퓨터 에서 하니 잘되네요 ^^

원인찾고 있읍니다.
불러오기 70~98% 정도에서 멈춰서 메모리 급격하게 올라가기 시작하는데
제컴만 그렇네요

제컴이 문제인거 같읍니다 ~ 죄송합니다~ ㅋㅋ
1. 1개 파일 업로드후
2. 글수정 한개 파일 추가
결과 > 업로드 안됨!

1. 1개 파일 업로드후
2. 글수정 한개 파일 추가
3. 순서 교체
결과 > 업로드 됩니다.

1. 1개 파일 업로드후
2. 글수정 2개 파일 추가
결과 > 2번 빠지고 1번3번만 있읍니다.

*** 3개 이상 부터는 오류 없이 작동 합니다.
*** 1번 파일 있을때 2번째 파일 작동 안합니다.
*** 정렬문제 인거 같읍니다.
소중한 의견 감사합니다.
/extend/fileinput.config.php
69줄
if( $max_bf_no > 0 )
=>
if( $max_bf_no >= 0 )

이렇게 수정해주시면 됩니다.
제대로 작업하지 못해서 죄송합니다.
1. 동일파일명을 첫게시물에 올리고 등록한후 다음게시물에도 동일파일을 올린후 파일을 삭제하면 1번게시물의 동일파일명 이미지도 삭제되는 현상? 저같은경우는 upload에 head_filename 에 time()으로 분기시켜줘서 해결을 하긴 했습니다만..

2. 혹 jpg파일은 전혀문제가 없는데 JPG 대문자파일은 파일첨부란에 이미지표시가 안되는것 같은데..(본문 노출에는 문제가 없습니다) $filename에 strtolower 해줬습니다... 음 적으면서 한글파일명도 테스트해봐야겠네요;;

제가 소스를 완벽히 이해한게 아니라서...수정한게 문제가 되지 않을까싶어서ㅋ

저희쪽 사이트에 꼭 적용 하고 싶어서 정말 많이 테스트해보고 있습니다 ㅋ
이런업로드를 공개해주셔서 정말 감사드립니다.
답변이 늦어서 죄송합니다.
1. fileinput_update.php의 upload_resumable함수내에
unset($_SESSION[$sessionName]);
이것을 insert문 다음으로 위치해주시면 됩니다.
이것때문에 파일명이 중복되어서 생기는 문제였습니다.

2. fileinput.config.php의 getFileType 함수에서
확장자구분에 대문자를 추가해주시면 됩니다.
샘플보고 작업하고 있는 게시판에 적용 시켜 보았는데 이미 등록된 게시물 수정할 때 첨부된 파일들이 보이지 않아 여기저기 보니까 g5_board_file테이블에 bf_no값이 마이너스 값으로 생성되고 wr_id값은 아예 들어가지 않고 있네요. 어떻게 손대야 할지 감이 안 잡혀요..ㅠ_ㅠ

도움 절실합니다..
안녕하세요. 파일 감사합니다. 문제가 하나 생겨서 댓글로 문의드립니다.
bf_no 가 문제인데요 처음 이미지를 4장 올리면 bf_no가 1,2,3,4 이렇게 순서에 맞게 올라가는데
게시물 수정을 누르고 파일 순서를 바꾸면 0,1,2,3 으로 바뀝니다.
처음부터 0,1,2,3 으로 적용되던가 순서를 바뀌어도 1,2,3,4로 유지할 방법이 있을까요?
답변 주시면 감사하겠습니다 ㅜㅜ
/extend/fileinput.config.php
파일
76줄
$bf_no = $max_bf_no + $i;
이부분을 아래처럼하시면될거에요.

 if($w=="u"){
            $bf_no = $max_bf_no + $i;
        }else{
            $bf_no = $i;
        }
전체 2,434 |RSS
그누보드5 스킨 내용 검색

회원로그인

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