파일키위- 단순무적 대용량 파일전송 서비스
  • 한국어
  • English
사용설명서

그누보드 대용량 파일첨부 플러그인 by 파일키위

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

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

파일키위가 그누보드 운영자 분들을 위해서 준비했습니다.

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

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

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

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

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

설치방법입니다.

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 } ?> 

알아두세요.

  • 위 플러그인으로 생성된 모든 웹폴더와 파일의 소유권과 책임은 코드에 입력한 이메일 소유자에게 있습니다. 해당 이메일로 로그인하면, 방문자가 만든 웹폴더를 삭제 할수 있고, 파일도 개별적으로 삭제할수 있습니다.
  • 게시판 방문자들은 누구나 업로드 할수 있고, 자신이 올린 파일에 대해서 삭제가 가능합니다.
  • 만료시간은 파일의 용량에 따라 달라집니다. 기본 48시간입니다.
  • 파일은 암호화되어 저장되고, 웹폴더 주소 전체가 있어야 원본에 접근할 수 있습니다.
  • 파일키위는 생성된 웹폴더 주소를 저장하지 않습니다.