갤러리스킨 만들기 도와주세요
본문
하고싶은것은 그누보드 갤러리게시판에서
기본 갤러리(gallery)스킨을 통해
사진 한장씩만 첨부파일로 올리도록 한후,
목록에서 체크박스를 통해 필요한 게시물만 다중체크하여
다운로드 버튼 클릭 - 다운로드 하게끔 하려고 합니다.
아래 소스는 다른사이트에서 가져온 소스인데
그누보드 갤러리게시판이 아니고 따로 디비테이블 만들고 아래처럼 쓰고 있는데요.
실력이 미천하여 아래 소스를 수정하는데 어려움이 있어 도움을 좀 요청드려봅니다.
################################################################################
//목록에서 체크박스, 다운로드 버튼 부분
################################################################################
<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>
################################################################################
//스크립트
################################################################################
<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);
}
}
}
</script>
################################################################################
//download.php
################################################################################
<?php
include_once('./_common.php');
// clean the output buffer
ob_end_clean();
@include_once($board_skin_path.'/download.head.skin.php');
// 쿠키에 저장된 ID값과 넘어온 ID값을 비교하여 같지 않을 경우 오류 발생
// 다른곳에서 링크 거는것을 방지하기 위한 코드
$filepath = G5_DATA_PATH.'/'.$folder.'/'.$file_name;
$filepath = addslashes($filepath);
if (!is_file($filepath) || !file_exists($filepath))
alert('파일이 존재하지 않습니다.');
// 사용자 코드 실행
@include_once($board_skin_path.'/download.skin.php');
$g5['title'] = '다운로드 > '.conv_subject($write['wr_subject'], 255);
$original = urlencode($file['bf_source']);
@include_once($board_skin_path.'/download.tail.skin.php');
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();
$fp = fopen($filepath, 'rb');
// 4.00 대체
// 서버부하를 줄이려면 print 나 echo 또는 while 문을 이용한 방법보다는 이방법이...
//if (!fpassthru($fp)) {
// fclose($fp);
//}
$download_rate = 10;
while(!feof($fp)) {
//echo fread($fp, 100*1024);
/*
echo fread($fp, 100*1024);
flush();
*/
print fread($fp, round($download_rate * 1024));
flush();
usleep(1000);
}
fclose ($fp);
flush();
?>
답변 1
간단하게 처리되는 부분이 아니며
목록에서 체크박스 체크 후 다운로드 버튼을 클릭하면
해당 download.php 파일의 상단 부분에서
체크된 게시글의 첨부파일을 다운로드 하도록
반복문을 실행하여야합니다.
해당 반복문이 실행되면서 파일들이 다운로드되어야하며
거기에 따른 여러가지 다운로드 조회수를 증가하는 코드도 삽입을 해야합니다.
답변을 작성하시기 전에 로그인 해주세요.