게시판 멀티 업로드 베이직 스킨 > 그누보드5 스킨

그누보드5 스킨

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

게시판 멀티 업로드 베이직 스킨 정보

게시판 게시판 멀티 업로드 베이직 스킨

첨부파일

basic.zip (40.7K) 65회 다운로드 2019-10-28 20:01:28 포인트 차감1,000
gallery.zip (41.0K) 20회 다운로드 2019-10-28 20:15:03 포인트 차감1,000
테스트한 버전5.4.0.3
호환 가능 버전5.3이상

본문

아래 두 파일 /bbs 폴드에 넣고
ajax_upload.php
ajax_upload_for_write_update.php


/bbs 안에 write_update.php 부분에 약 654줄에
// 파일의 개수를 게시물에 업데이트 한다.
아래 코드 넣고
 
// ajax_upload 파일에 관한 처리
@include_once('./ajax_upload_for_write_update.php');


그리고 이 안에 write.skin.php 를 열어보면 약137번줄에


    <?php for ($i=0; $is_file && $i<$file_count; $i++) { ?>
    <div class="bo_w_flie write_div">
        <div class="file_wr write_div">
            <label for="bf_file_<?php echo $i+1 ?>" class="lb_icon"><i class="fa fa-folder-open" aria-hidden="true"></i><span class="sound_only"> 파일 #<?php echo $i+1 ?></span></label>
            <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 ">
        </div>
        <?php if ($is_file_content) { ?>
        <input type="text" name="bf_content[]" value="<?php echo ($w == 'u') ? $file[$i]['bf_content'] : ''; ?>" title="파일 설명을 입력해주세요." class="full_input frm_input" size="50" placeholder="파일 설명을 입력해주세요.">
        <?php } ?>

        <?php if($w == 'u' && $file[$i]['file']) { ?>
        <span class="file_del">
            <input type="checkbox" id="bf_file_del<?php echo $i ?>" name="bf_file_del[<?php echo $i;  ?>]" value="1"> <label for="bf_file_del<?php echo $i ?>"><?php echo $file[$i]['source'].'('.$file[$i]['size'].')';  ?> 파일 삭제</label>
        </span>
        <?php } ?>
       
    </div>
    <?php } ?>

파일 업로드 부분 있습니다 아래 와같이 교체 해주세요

<?php
/******************************************************************************************************************************************************/
// ajax upload 시작 위에 원래 파일업로드 부분은 주석처리하면됨
/******************************************************************************************************************************************************/
?>
        <?php if($is_file and $file_count>0): ?>
          <?php
            if($w == 'u'){
              $new_files = [];
              //echo '<pre>';print_r($file);
              foreach($file as $k=>$v){
                //등록된 파일에는 삭제시 필요한 bf_file 필드 추가
                if(empty($v['file'])){ continue; }
                $new_files[] = $v;
              }
            }else{ $new_files = []; }
          ?>
          <input type="file" name="bf_file[]" style="display:none;" /><?/*그누보드 원래 파일필드라서 본스킨에서 사용하지는 않지만 없애면 에러남*/?>
        <?php endif; ?>
        <div style="background-color:#fff;padding:20px 0px 0px 0px;">
          <input type="hidden" id="ajax_files" name="ajax_files" value="" />
          <div style="position:relative;">
            <input type="file" id="pic" name="pic" onchange="upload_start()" accept="image/*" multiple="multiple" class="au_input" />
            <div class="au_btn_search_file">파일찾기</div>
          </div>
          <div id="file_list" style="padding:0px;margin:10px 0;display:flex;flex-wrap: wrap;max-width:760px;">
            <?php foreach($new_files as $v): ?>
              <div class="au_file_list">
                    <div style="max-height:50px;"><?=$v['view']?></div>
                    <div class="au_btn_del" onclick="delete_file('<?=$v['file']?>',this)">삭제</div>
              </div>
            <?php endforeach; ?>
          </div>
          <div class="au_progress"><div id="son" style="background-color:#9c0;color:#fff;"></div></div>
        </div>
        <style>
          .au_input{width:100%;height:100%;display:block;opacity:0;position:absolute;top:0;left:0;z-index:999;}
          .au_btn_search_file{background-color:#ddd;padding:10px;text-align:center;cursor:pointer;}
          .au_btn_del{padding:5px 10px; margin-top:3px; border-radius:4px;background-color:#f00;color:#fff;opacity:0.7;cursor:pointer;}
          .au_file_list{margin:5px;text-align:center;flex:0 0 60px;padding-right:5px;}
          .au_progress{display:none;border-radius:4px;text-align:center;}
        </style>
        <script type="text/javascript">
          var ajax_files = {'files':<?=empty($new_files) ? '[]' : json_encode($new_files)?>,'del':[]};
          var xhr = new XMLHttpRequest();
          function upload_start(){
            var picFileList = $("#pic").get(0).files;
            var formData = new FormData();
            formData.append("act_type","upload");
            formData.append("write_table","<?php echo $write_table ?>");
            formData.append("bo_table","<?php echo $bo_table ?>");
            formData.append("wr_id","<?php echo $wr_id ?>");
            for(var i=0;i<picFileList.length;i++){ formData.append("file[]",picFileList[i]); }
            /*
            req.addEventListener("progress,load,error,abort", updateProgress, false);
            */
            xhr.upload.addEventListener("progress",onprogress,false);
            xhr.addEventListener("error",upload_failed,false);
            xhr.addEventListener("load",upload_success,false);
            xhr.open("POST","ajax_upload.php");
            xhr.send(formData);
          }
          function onprogress(evt){
            var loaded = evt.loaded;//已经上传大小情况
            var tot = evt.total;//附件总大小
            var per = Math.floor(100*loaded/tot);//已经上传的百分比
            $("#son").parent().css("display","block");
            $("#son").html(per+"%");
            $("#son").css("width",per+"%");
          }
          function upload_failed(evt){ alert("업로드실패"); }
          function upload_success(evt){
            var res = JSON.parse(evt.target.response);
            if(res.res=='true'){
              for(var i=0;i<res.list.length;i++){
                var str = '<div class="au_file_list">';
                    str += '<div>'+res.list[i].view+'</div><div class="au_btn_del" onclick="delete_file(''+res.list[i].bf_file+'',this)">삭제</div>';
                    str += '</div>';
                $("#file_list").append(str);
                ajax_files.files.push(res.list[i]);
              }
              $("#ajax_files").val(JSON.stringify(ajax_files));
            }else{ alert(res.msg); }
          }
          function delete_file(file,obj){
            var formData = new FormData();
            formData.append("act_type","delete");
            formData.append("write_table","<?php echo $write_table ?>");
            formData.append("bo_table","<?php echo $bo_table ?>");
            formData.append("wr_id","<?php echo $wr_id ?>");
            formData.append("bf_file",file);
            xhr.open("POST","ajax_upload.php");
            xhr.send(formData);
            $(obj).parent().remove();
            ajax_files.del.push(file);
            $("#ajax_files").val(JSON.stringify(ajax_files));
          }
        </script>
<?php
/******************************************************************************************************************************************************/
// ajax upload 끝
/******************************************************************************************************************************************************/
?>

초보자경우는 그냥 업로드 하세요.
읽어주셔서 감사합니다.

 

많은분들 문의 남겨주셔서 바로바로 답장못드려서 죄송합니다
카톡오픈채팅방 오픈하였습니다 

바로답장원하시는분 카톡 오픈 채팅에 문짜주세요

오픈채팅 링크 https://open.kakao.com/o/sSmfVLJb

991008393_1572260481.8698.jpg

추천
12

댓글 전체

Gallery스킨은 이미지 첨부가 잘 되는데
베이직 스킨을 적용한 게시판에 압축File이나 Text File 첨부하면
"지원하지 않는 파일격식입니다"라는 Error메시지가 나옵니다.
어디를 수정해야 하는지요?
전체 2,430 |RSS
그누보드5 스킨 내용 검색

회원로그인

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