테스트 사이트 - 개발 중인 베타 버전입니다

갤러리스킨 만들기 도와주세요 채택완료

망이망소이 7년 전 조회 2,606

하고싶은것은 그누보드 갤러리게시판에서

기본 갤러리(gallery)스킨을 통해 

사진 한장씩만 첨부파일로 올리도록 한후,

목록에서 체크박스를 통해 필요한 게시물만 다중체크하여 

다운로드 버튼 클릭 - 다운로드 하게끔 하려고 합니다.

 

아래 소스는 다른사이트에서 가져온 소스인데

그누보드 갤러리게시판이 아니고 따로 디비테이블 만들고 아래처럼 쓰고 있는데요.

 

 

실력이 미천하여 아래 소스를 수정하는데 어려움이 있어 도움을 좀 요청드려봅니다. 

 

 

</p>

<p>################################################################################</p>

<p>//목록에서 체크박스, 다운로드 버튼 부분</p>

<p>################################################################################</p>

<p><div class="certificate_box gallery">

                                    <ul>

                                        <?php for ($i=0; $row=sql_fetch_array($cert); $i++) { ?>

                                            <li><input type="checkbox" name="file<?=$i+1?>" id="ce_file" value="<?php echo $row['certification_image_large'] ?>" /><a href="<?php echo G5_URL ?>/data/certification/<?php echo $row['certification_image_large'] ?>" rel="prettyPhoto[cert]" /><img class="certificate_l" src="<?php echo G5_URL ?>/data/certification/<?php echo $row['certification_image'] ?>" width="204" height="285" alt="<?php echo $row['certification_name'] ?>" /></a>

                                            <p><?php echo $row['c_label'] ?></p>

                                            <div style="clear:both"></div>

                                            </li>

                                        <?php } ?>

                                    </ul>

                                    <div class="submit_box">                                       

                                        <center><input type="button" id="ce_submit" value="다운받기" onclick="suffix=1;downloadAll(this.form);return false" /></center>                                       

                                    </div>  

                                                                  

                                </div></p>

<p> </p>

<p> </p>

<p>################################################################################</p>

<p>//스크립트</p>

<p>################################################################################</p>

<p><script>

var suffix=1;

function downloadAll(oFrm){

  var oChk = oFrm.elements["file"+(suffix++)];

  if (oChk){

      if (oChk.checked){

          location.href = "<?php echo G5_URL ?>" + "/download.php?folder=certification&file_name=" + oChk.value;

          setTimeout(function(){downloadAll(oFrm)}, 1000);

      }

      else{

          downloadAll(oFrm);

      }

  }

}</p>

<p></script></p>

<p> </p>

<p> </p>

<p>################################################################################</p>

<p>//download.php</p>

<p>################################################################################</p>

<p><?php

include_once('./_common.php');</p>

<p>// clean the output buffer

ob_end_clean();

@include_once($board_skin_path.'/download.head.skin.php');</p>

<p>// 쿠키에 저장된 ID값과 넘어온 ID값을 비교하여 같지 않을 경우 오류 발생

// 다른곳에서 링크 거는것을 방지하기 위한 코드</p>

<p>$filepath = G5_DATA_PATH.'/'.$folder.'/'.$file_name;

$filepath = addslashes($filepath);

if (!is_file($filepath) || !file_exists($filepath))

    alert('파일이 존재하지 않습니다.');</p>

<p>// 사용자 코드 실행

@include_once($board_skin_path.'/download.skin.php');</p>

<p>$g5['title'] = '다운로드 &gt; '.conv_subject($write['wr_subject'], 255);</p>

<p>$original = urlencode($file['bf_source']);</p>

<p>@include_once($board_skin_path.'/download.tail.skin.php');</p>

<p>if(preg_match("/msie/i", $_SERVER['HTTP_USER_AGENT']) && preg_match("/5\.5/", $_SERVER['HTTP_USER_AGENT'])) {

    header("content-type: doesn/matter");

    header("content-length: ".filesize("$filepath"));

    header("content-disposition: attachment; filename=\"$file_name\"");

    header("content-transfer-encoding: binary");

} else {

    header("content-type: file/unknown");

    header("content-length: ".filesize("$filepath"));

    header("content-disposition: attachment; filename=\"$file_name\"");

    header("content-description: php generated data");

}

header("pragma: no-cache");

header("expires: 0");

flush();</p>

<p>$fp = fopen($filepath, 'rb');</p>

<p>// 4.00 대체

// 서버부하를 줄이려면 print 나 echo 또는 while 문을 이용한 방법보다는 이방법이...

//if (!fpassthru($fp)) {

//    fclose($fp);

//}</p>

<p>$download_rate = 10;</p>

<p>while(!feof($fp)) {

    //echo fread($fp, 100*1024);

    /*

    echo fread($fp, 100*1024);

    flush();

    */</p>

<p>    print fread($fp, round($download_rate * 1024));

    flush();

    usleep(1000);

}

fclose ($fp);

flush();

?>

 </p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
그누위즈

간단하게 처리되는 부분이 아니며

목록에서 체크박스 체크 후 다운로드 버튼을 클릭하면

해당 download.php 파일의 상단 부분에서

체크된 게시글의 첨부파일을 다운로드 하도록

반복문을 실행하여야합니다.

해당 반복문이 실행되면서 파일들이 다운로드되어야하며

거기에 따른 여러가지 다운로드 조회수를 증가하는 코드도 삽입을 해야합니다.

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

망이망소이
7년 전
답변 감사합니다.^^

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인