• 포토폴리오
  • 그누스킨
  • 소스팁
  • 제작의뢰
  • 질문답변
  • 공지사항
  • 로그인
  • 회원가입
  • 갤러리 파일 멀티 업로드 베이직스킨

    페이지 정보

    개발자  0 Comments  186 Views  19-10-28 19:58  PC버전

    본문

    아래 두 파일 /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 끝
    /******************************************************************************************************************************************************/
    ?>
    1.jpg (43.4K) 0회 다운로드
    2.jpg (64.8K) 0회 다운로드
    gallery.zip (41.0K) 1회 다운로드

    댓글목록

    등록된 댓글이 없습니다.

    Copyrightⓒ heogeol.com All rights reserved.