대용량 파일첨부 플러그인 - 무제한/무료 > 그누보드5 플러그인

그누보드5 플러그인

그누보드는 다양한 기능을 추가하기 쉽습니다.

대용량 파일첨부 플러그인 - 무제한/무료 정보

대용량 파일첨부 플러그인 - 무제한/무료

첨부파일

write.skin.php (16.0K) 66회 다운로드 2021-04-14 16:07:40
테스트한 버전5.4.5.3
호환 가능 버전5.x

본문

그누보드로 운영하다 보면 첨부용량이 골치아프기 마련인데요.

파일첨부 용량을 늘려주고 싶지만 트래픽이 감당하는게 어렵죠. 

 

그누보드용 파일첨부 플러그인을 소개합니다. 용량에 제한없는 무료입니다.

제한이 있다면, 만료시간이 있습니다. 업로드된 파일은 일정시간내에 다운로드 받아야 합니다. 

 

게시판 방문자 입장에서 어떻게 사용하는지 일단 한번 보시죠. 


테스트 게시판으로 가셔서  하단 [대용량 파일첨부] 버튼을 누르면 웹폴더가 생성되고 이 링크가 게시글에 저장됩니다. 

방문자는 링크를 눌러서 다운로드 할 수 있게 됩니다.  

 

img.png

 

 

설치방법입니다.

1. 해당 게시판 설정에서 링크를 입력할 수 있도록 설정합니다.  여러개인 경우 마지막 링크에 대용량첨부 버튼이 붙게 됩니다. 

2. https://file.kiwi 에 가서 회원가입을 합니다.  https://dev.file.kiwi/getstart에서 설명을 보시고 API KEY를 발급받습니다.  

3. 현재 사용하고 계신 글쓰기 스킨(write.skin.php)만 수정하면 됩니다. 코드에 APIKEY를  1번에서 사용한 것으로 입력해주셔야합니다.

G5_LINK_COUNT 으로 검색하면 링크 입력창 출력하는 부분에서 볼수 있습니다.

노란색 부분이 추가 되는 부분입니다. 

  <?php for ($i=1; $is_link && $i<=G5_LINK_COUNT; $i++) { ?>
    <div class="bo_w_link write_div"> 
        <label for="wr_link<?php echo $i ?>"><i class="fa fa-link" aria-hidden="true"></i><span class="sound_only"> 링크  #<?php echo $i ?></span></label>
        <input type="text" name="wr_link<?php echo $i ?>" value="<?php if($w=="u"){ echo $write['wr_link'.$i]; } ?>" id="wr_link<?php echo $i ?>" class="frm_input full_input" size="50"> 
        

    <!-- 추가 되는 부분 시작  -->

        <?php if($i==G5_LINK_COUNT)  {?>

        <span style=" position: absolute; padding: 5px; display:flex;  height: 100%;    top: 0;    right: 0;    bottom: 0;    align-items: center;">

 

            <a  style="text-decoration: underline;   padding: 10px;    "

              id="awr_link<?php echo $i ?>" target="_blank" href="#" >파일추가</a> 

            <button type=button style="padding: 5px;" id="bwr_link<?php echo $i ?>"   >대용량파일 첨부</button>

          

            <script> 

                         function makeFilekiwiButton(elm, key, callback) {

 

                            elm.addEventListener("click", function() {

 

                        var w = 500;

                        var h = 500;

                        var dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left;

                        var dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top;

                        var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;

                        var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;

                        var left = ((width / 2) - (w / 2)) + dualScreenLeft;

                        var top = ((height / 2) - (h / 2)) + dualScreenTop;

                        var win = window.open("", "_blank", 'menubar=yes,location=yes,resizable=yes,scrollbars=yes, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);


 

                        const url = 'https://api.file.kiwi/v1/webfolder';

                        const options = {

                        method: 'POST',

                        //  mode:'cors', 

                        headers: {

                            //Accept: 'application/json',

                            'Content-Type': 'application/json',

                            'x-api-key': key

                        },

                        body: '{}'

                        };

 

                                fetch(url, options)

                                .then(res => res.json())

                                .then(json => {

 

                                    var url = json.url;


 

                                    callback(url);

                                    win.document.write("파일을 업로드할 웹폴더가 생성중입니다. 잠시만 기다려주세요.");

                                        win.document.write("<","script",">"); 

                                        win.document.write('alert("* 파일업로드는 10분내에 시작되야 합니다.(그때까지 완료될 필요는 없음)\\n* 업로드중에는 현재창을 닫지 말고 유지해야 하지만,\\n* 링크전달을 기다릴 필요는 없습니다. 웹폴더 링크는 바로 전달해도 됩니다.");');

                                        win.document.write("location.href='" + url + "'");

 

                                        win.document.write("<","/script",">");


 

                                        //win.location.href = url;

                                        if (window.focus) {

                                        win.focus();

                                        }

                                    })

                                    .catch(err => console.error('error:' + err));




 

                                });


 

                            };

 

          

                  

                        const fk_reg=/https:\/\/file.kiwi\/[a-zA-Z0-9]{8}#.{7,}/;

 

                        function fk_updateValue(e) {

                            var url = e.target.value;

 

                            var btn=document.getElementById("b"+e.target.name);

                            var atag=document.getElementById("a"+e.target.name);

 

                            console.log(url);

                        if(fk_reg.exec(url)) {

                            btn.style.display="none";

                            atag.style.display="inline";

                            atag.href=url;


 

                        }else {

                            btn.style.display="inline"            

                        atag.style.display="none"

                            atag.href="#";

                        }

                        }



 

                

                          var inp=document.forms['fwrite']['wr_link<?php echo $i ?>']; 

                       

                            inp.addEventListener('change', fk_updateValue);

                            fk_updateValue({target:inp});

 

                            onclick="fk_insert('wr_link<?php echo $i ?>',this)"

 

                            var btn=document.getElementById('bwr_link<?php echo $i ?>');

                            makeFilekiwiButton( btn,"APIKEY", url=>{

 

                                inp.value=url;

 

                                inp.dispatchEvent(new Event("change"));

                                btn.disabled=false;

                        

 

                            } );

                            btn.addEventListener("click" , e=>{


 

                                btn.disabled=true;

                                inp.value="잠시만 기다려주세요..";

                       

                            });

                            

                </script> 

     

            

         </span>

         <?php } ?>

           <!-- 추가 되는 부분 끝 -->                

   

             
    </div>
  
    <?php } ?> 

자세한 설명은 https://scalaplay.tistory.com/27  를 참고하세요
추천
5

댓글 전체

글내용에 있는 노란 부분이 꽤 달라서 저방식으로 적용하는건 힘드니
올려주신 write.php 파일을 다운로드 해서 쓰시고

var email="*** 개인정보보호를 위한 이메일주소 노출방지 ***"; // file.kiwi에  가입한 이메일
이부분을 실제 가입한 이메일로 바꾸고
바로 윗줄에

var k=" 파일키위 개발자로 받은 api "; //file.kiwi api
를 추가해주셔야 정상작동 합니다

다른 스킨에 적용시키고 싶은분은 위처럼 수정후

<!-- 추가되는 부분 시작 -->
~~
<!-- 추가되는 부분 끝 -->

을 복사해서 알맞은 위치에 넣어주시면 작동합니다
좋은 정보 감사합니다
전체 1
그누보드5 플러그인 내용 검색

회원로그인

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