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

그누보드5 스킨

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

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

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

첨부파일

g5_multi_upload_chunk.zip (1.3M) 146회 다운로드 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,423 |RSS
그누보드5 스킨 내용 검색

회원로그인

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