안녕하세요!! 다운로드 기능을 더 추가하려고 하는데요.. 막히는 곳이 있어 질문을 드립니다

안녕하세요!! 다운로드 기능을 더 추가하려고 하는데요.. 막히는 곳이 있어 질문을 드립니다

QA

안녕하세요!! 다운로드 기능을 더 추가하려고 하는데요.. 막히는 곳이 있어 질문을 드립니다

답변 1

본문

안녕하세요! 제가 다운로드 기능을 더 추가하려고 하는데 어려움이 있어서 이렇게 질문을 하게 되었습니다

 

상황은 다른곳에서 이미 만들어준 download.php가 있는데 이것을 활용해서 다운로드 기능을 활용할수있습니다 하지만 요구사항이 다운로드 버튼이 하나만 있는것이 아니라 두개를 만들어서 각각 다른 파일을 올리고 싶다는것입니다 그래서 현재 있는 버튼을 하나 더 만들었는데요 하지만 이제 같은 파일만 올라가지 관리자 페이지에서 다른 파일을 올리더라도 변경이 되지 않더라고요.. $item['it_1']만 변경해주면 되는건줄 알고 쉽게 생각했는데 꽤 막혀서 어떻게 해야할지 모르겠네요..

 

download.php


<?
include_once('./_common.php');
 
$iid =  $_GET["iid"];
$od_id=  $_GET["id"];
$iid= preg_replace('/[^a-z0-9_\-]/i', '', $iid);
$od_id =preg_replace('/[^a-z0-9_\-]/i', '', $od_id);
        $sql = " select it_id, it_name, ct_send_cost, it_sc_type, ct_status
                    from {$g5['g5_shop_cart_table']}
                    where od_id = '$od_id' AND mb_id='{$member["mb_id"]}' and it_id = '{$iid}'";
        $row= sql_fetch($sql);
  
    if($row["ct_status"] == '完了' || $row["ct_status"] == '完了'|| $row["ct_status"] == '완료')
    {
        $sql = " select *
                from {$g5['g5_shop_item_table']}
                where it_id = '{$row['it_id']}' ";
        $item= sql_fetch($sql);
        $arr= explode(".", $item["it_add"]);
        $ext = $arr[sizeof($arr)-1];
        $ext= strtolower($ext);
        $exts = array("php","php3","php4", "php5","html", "inc","htm", "sql");
        if(in_array($exts, $ext))
        {
            exit;
        }
        $data = file_get_contents($item["it_add"]);
        
        header("Content-Disposition: attachment; filename=" . urlencode($item["it_add_subj"]));   
        header("Content-Type: application/force-download");
        header("Content-Type: application/octet-stream");
        header("Content-Type: application/download");
        header("Content-Description: File Transfer");            
        //header("Content-Length: " . filesize($file));
        print file_get_contents($item["it_add"]);
        flush(); // this doesn't really matter.
    }
    

 

관리자 페이지 버튼 하나 더 추가 itemform.php


 <tr>
            <th scope="row">DOWNLOAD (zip)</th>
            <td class="td_extra">
                <label for="it_1_subj">file이름</label>
                <input type="text" name="it_1_subj" id="it_1_subj" value="<?php echo get_text($it['it_1_subj']) ?>" class="frm_input">
                <label for="it_1">file URL</label>
                <input type="text" name="it_1" value="<?php echo get_text($it['it_1']) ?>" id="it_1" class="frm_input">
            </td>
            <td class="td_grpset">
                <input type="checkbox" name="chk_ca_<?php echo $i ?>" value="1" id="chk_ca_<?php echo $i ?>">
                <label for="chk_ca_<?php echo $i ?>">분류적용</label>
                <input type="checkbox" name="chk_all_<?php echo $i ?>" value="1" id="chk_all_<?php echo $i ?>">
                <label for="chk_all_<?php echo $i ?>">전체적용</label>
            </td>
        </tr>
         <tr>
            <th scope="row">DOWNLOAD (jpg) </th>
            <td class="td_extra">
                <label for="it_add_subj">file이름</label>
                <input type="text" name="it_add_subj" id="it_add_subj" value="<?php echo get_text($it['it_add_subj']) ?>" class="frm_input">
                <label for="it_add_subj">file URL</label>
                <input type="text" name="it_add" value="<?php echo get_text($it['it_add']) ?>" id="it_add" class="frm_input">
            </td>
            <td class="td_grpset">
                <input type="checkbox" name="chk_ca_<?php echo $i ?>" value="1" id="chk_ca_<?php echo $i ?>">
                <label for="chk_ca_<?php echo $i ?>">분류적용</label>
                <input type="checkbox" name="chk_all_<?php echo $i ?>" value="1" id="chk_all_<?php echo $i ?>">
                <label for="chk_all_<?php echo $i ?>">전체적용</label>
            </td>
        </tr>

 

여기서 원래 it_1 만 있었는데 제가 밑에 버튼을 it_add로 바꾸어서 혹시 이렇게만 바꾸면 올리면 다운로드가 되지 않을까 했는데 되질 않더라고요.. download.php에서도 if문 줘서 해봤는데도.. 어렵고요

 


    
                    <?php if($opt['ct_status'] =='완료') {?>
                        <td headers="th_itst" class="td_mngsmall" id="download-available"><a href='download.php?id=<?=$od_id?>&iid=<?=$row["it_id"]?>' class="download-available__href">DOWNLOAD</a></td>
                
                    <?php }else {?>
                        <td headers="th_itst" class="td_mngsmall"><i class="fas fa-ellipsis-h"></i></td>
                    <?php }?>
                    <?php if($opt['ct_status'] =='완료') {?>
                        <td headers="th_itst" class="td_mngsmall" id="download-available"><a href='download.php?id=<?=$od_id?>&iid=<?=$row["it_id"]?>' class="download-available__href">DOWNLOAD<!--<p class="download-unavailable">준비중</p> --></a></td>
                
                    <?php }else {?>

 

여기서도 이렇게 두개의 파일을 다운 받을수 있게 했지만 역시.. 똑같은 파일만 다운되거나 둘다 안되거나 하는데 어떻게 해야할지 모르겠습니다ㅠㅠ 조언을 구하고 싶네요

 

 

이 질문에 댓글 쓰기 :

답변 1

변경된 download.php는 g5_shop_item.it_add에 있는 것만 다운로드하게 되어 있군요.
            <th scope="row">DOWNLOAD (jpg) </th>
            <td class="td_extra">
                <label for="it_add_subj">file이름</label>
                <input type="text" name="it_add_subj" id="it_add_subj" value="<?php echo get_text($it['it_add_subj']) ?>" class="frm_input">
                <label for="it_add_subj">file URL</label>
                <input type="text" name="it_add" value="<?php echo get_text($it['it_add']) ?>" id="it_add" class="frm_input">
            </td>
이 부분을 보니 파일을 첨부 파일 형태로 서버에 올리는 게 아니라

URL을 입력하신 것 같은데

이 URL이 가리키는 곳에 파일이 없는 거 같습니다.

 

download.php가 있는 곳부터 상대적인 위치에 있어야 합니다.

선생님 답변 남겨주셔서 너무너무 감사합니다 몇가지.. 더 질문이 있어서 글을 적습니다 첫번째는 g5_shop_item.it_add는 어디에 있는거죠? 일단은 원래는 it_1 이였던 것을 제가 그냥 php 부분에서만 바꾼것입니다 이것은 디비에 있는건가요? 아니면 정확히 위치가.. 어디인지 모르겠습니다 코드를 봐야하는 부분이라면 그냥 선생님 지혜에서만이라도 조금만 조언을 주시면 감사하겠습니다 그리고 두번재는 download.php가 있는곳부터 상대적인 위치에 있어야 한다는 말씀은 어떤 말씀이시간요? 관리자 페이지에서 fileURL를 루트/file/.. 이런식으로 적으면 다운이 됩니다 다시 한번 글을 적어주셔서 감사합니다

선생님! 한번만 더 질문을 드리고 싶은데요.. 원래 it_1 을 제가 it_add 로 바꾼건데 그 이유가 제 생각에는 it_1를 다운로드하면 다운로드가 되니까 it_add로 바꾸면 새롭게 만든 페이지에서 it_add로 다운로드가 될거라고 생각했습니다.. 하지만 계속 에러가 뜨는데 이럴 경우에는 어떻게 해야할까요..ㅠㅠ 좋은 질문을 해야 될텐데 가슴이 아픕니다

선생님 너무너무 감사합니다 덕분에 이제 파일은 정상적으로 올라가네요!! 이정도라도 나아가서 정말 다행입니다ㅠㅠㅠ 제가 계속 귀찮게 해서 정말 죄송하지만 혹시나 다른 php에 있는 변수를 공유할수있는 방법이 있을까요? include나 require 를 사용해야되나요? 다른 방법도 혹시 있을까요?

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 15
© SIRSOFT
현재 페이지 제일 처음으로