리스트에서 첨부파일 다운로드 적용 관련 문의드립니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
리스트에서 첨부파일 다운로드 적용 관련 문의드립니다.

QA

리스트에서 첨부파일 다운로드 적용 관련 문의드립니다.

본문

안녕하세요.
리스트에서 첨부파일 다운로드 적용하려고 검색을 해서
아래 소스를 찾았습니다.

 


     <?php
     $sql = " select * from $g5[board_file_table] where bo_table = '". $bo_table. "' and wr_id = '". $list[$i]['wr_id'] ."' order by bf_no ";
     $result = sql_query($sql);
     while ($row = sql_fetch_array($result))
     {
     $down_link = "download.php?bo_table={$bo_table}&wr_id={$list[$i]['wr_id']}&no={$row['bf_no']}";
     $file_source = addslashes($row['bf_source']);
     $file_type = preg_replace('/^.*\.([^.]+)$/D', '$1', $file_source);
     $file_size = get_filesize($row['bf_filesize']);
     if(!in_array($file_type, array('jpg', 'jpeg', 'gif', 'bmp', 'png'))){    //이미지는 제외
        echo "<a href=\"".$down_link."\" title=\"".$file_source."\">";
        echo "<img src='". $board_skin_url ."/filetype/". $file_type .".gif' border=0 align='absmiddle' alt=\"".$file_source."\">({$file_size})";
        echo "</a> ";
       }                        
     }
    ?>

 

적용후 첨부파일 클릭했더니, Not Found 가 떠서
위 소스중 다운로드 경로 아래처럼 bbs/를 추가해줬습니다.

 


     $down_link = "bbs/download.php?bo_table={$bo_table}&wr_id={$list[$i]['wr_id']}&no={$row['bf_no']}";

이렇게 했더니 링크는 제대로 됐는데,


클릭시
"토큰 유효시간이 지났거나 토큰이 유효하지 않습니다. 
브라우저를 새로고침 후 다시 시도해 주세요."
라는 창이 뜨네요.

 

bbs/download.php
에서

if (function_exists('download_file_nonce_is_valid') && !defined('G5_DOWNLOAD_NONCE_CHECK')){
    if(! download_file_nonce_is_valid($nonce, $bo_table, $wr_id)){
        alert('토큰 유효시간이 지났거나 토큰이 유효하지 않습니다.\\n브라우저를 새로고침 후 다시 시도해 주세요.', G5_URL);
    }
}

이 부분을 삭제하면 리스트에서도 정상적으로 첨부파일이 다운 받아지기는 하는데,
이걸 삭제하면 무슨 문제가 생길지 몰라서 삭제하지는 않았습니다.


계속 검색하다보니 아래 팁을 찾았습니다.
https://gnustudy.com/bbs/board.php?bo_table=skin_board&wr_id=91

 


for ($i=0; $i<count($list); $i++) {
바로 밑에 다음 코드를 추가.
$ss_name = 'ss_view_'.$bo_table.'_'.$list[$i]['wr_id'];
if (!get_session($ss_name)) set_session($ss_name, TRUE);
다운로드 링크를 원하는 위치에 추가
<?php if ($list[$i]['file'][0]['file']) { ?>
<a href="<?php echo $list[$i]['file'][0]['href']; ?>">[다운로드]</a>
<?php } ?>

 

이걸 적용하면 아무런 에러 없이 정상적으로 리스트에서 첨부파일이 다운 받아 지긴 하는데, 
무조건 파일#1번에 첨부한 파일이 받아지네요.

파일#1에 이미지를 업로드 했다면 이미지 파일이 받아집니다.

 

맨 처음 소스는 이미지는 안 받아지고, 
파일#1에 이미지가 있고, 파일#2에 .zip등 첨부 파일이 있다면, 
파일#2가 다운받아 지고요.

 

혹시 
맨 처음 소스 "토큰 유효시간을...." 에러가 안뜨게 할 수 있는 방법이나,


두번째 소스 이미지일 경우 다운로드 안 뜨고,

무조건 파일#1이 아닌 파일#1에 이미지, 파일#2에 zip파일일 경우 파일#2가 뜨게 하는 방법 없을까요?

이 질문에 댓글 쓰기 :

답변 2

바로 밑에 다음 코드를 추가.
$ss_name = 'ss_view_'.$bo_table.'_'.$list[$i]['wr_id'];
if (!get_session($ss_name)) set_session($ss_name, TRUE);

<---이것만 for문 다음에 넣으세요

 

친절하신 답변 감사합니다.
그런데, 이미 for문 다음에
$ss_name = 'ss_view_'.$bo_table.'_'.$list[$i]['wr_id'];
if (!get_session($ss_name)) set_session($ss_name, TRUE);
를 넣은 상태인데, 따로 무언가를 해줘야 하는게 있는 건가요?

다운로드 링크 부분을 다음처럼 수정하세요
$nonce = download_file_nonce_key($bo_table, $list[$i]['wr_id']); //추가
    while ($row = sql_fetch_array($result))
    {
    $down_link = "download.php?bo_table={$bo_table}&wr_id={$list[$i]['wr_id']}&no={$row['bf_no']}&amp;nonce=$nonce"; //마지막 nonce 부분 추가

1.이 부분을 삭제하면 리스트에서도 정상적으로 첨부파일이 다운 받아지기는 하는데,
이걸 삭제하면 무슨 문제가 생길지 몰라서 삭제하지는 않았습니다.

파일이 특정인에게만 다운받게해야하는게 아니면 삭제해도상관없습니다. 

2.
<?php if ($list[$i]['file'][0]['file']) { ?>
<a href="<?php echo $list[$i]['file'][0]['href']; ?>">[다운로드]</a>
<?php } ?>

0 말고 1로 한번 수정해보세요

답변을 작성하시기 전에 로그인 해주세요.
전체 59,917
QA 내용 검색

회원로그인

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