묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
php5로 download 구현하는 방법 좀 봐주세요
2012.01.23 02:51
download.html
<?
if($f && $fn) {
$dir = "./"; // 파일이 저장되어 있는 폴더 설정
function goBack($msg='', $url='') {
echo "<script>";
if($msg) echo 'alert("'.$msg.'");';
if($url) echo 'location.replace("'.$url.'");';
else echo 'history.go(-1);';
echo "</script>";
}
$real_name = $fn; //다운로드시 저장될 파일명
$save_name = $f; //서버에 실제 저장되어 있는 파일명
//▶ 만약 파일이 없을 경우 에러출력
if(!file_exists($save_name)) {
goBack("다운로드할 파일을 찾을 수 없습니다.");
exit;
} else {// 파일이 있으면 다운로드
if(eregi("(MSIE 5.0|MSIE 5.1|MSIE 5.5|MSIE 6.0)", $_SERVER["HTTP_USER_AGENT"]) && !eregi("(Opera|Netscape)", $_SERVER["HTTP_USER_AGENT"])) {
Header("Content-type: application/octet-stream");
Header("Content-Length: ".filesize($save_name));
Header("Content-Disposition: attachment; filename=".$real_name);
Header("Content-Transfer-Encoding: binary");
Header("Pragma: no-cache");
Header("Expires: 0");
} else {
Header("Content-type: file/unknown");
Header("Content-Length: ".filesize($save_name));
Header("Content-Disposition: attachment; filename=".$real_name);
Header("Content-Description: PHP3 Generated Data");
Header("Pragma: no-cache");
Header("Expires: 0");
}
$fp = fopen($save_name, "rb");
if(!fpassthru($fp))
{
echo "ok";
fclose($fp);
}
else {
echo "error.";}
}
}else
echo " 에러";
?>
상기 다운로드 사용을 위해 하기와 같이 사용하는데요..
<a href="download.html?f="/DATA/fract60/public_html/kb/data/draft/<?=$data[no]?>/<?=$data[filename]?>&fn=<?=$data[filename]?>" target='_blank'><?=$data[filename]?></a>
여기서 f 와 fn 값이 넘어가지 않는것으로 확인되었습니다.
어떻게 해야 할까요?
<?
if($f && $fn) {
$dir = "./"; // 파일이 저장되어 있는 폴더 설정
function goBack($msg='', $url='') {
echo "<script>";
if($msg) echo 'alert("'.$msg.'");';
if($url) echo 'location.replace("'.$url.'");';
else echo 'history.go(-1);';
echo "</script>";
}
$real_name = $fn; //다운로드시 저장될 파일명
$save_name = $f; //서버에 실제 저장되어 있는 파일명
//▶ 만약 파일이 없을 경우 에러출력
if(!file_exists($save_name)) {
goBack("다운로드할 파일을 찾을 수 없습니다.");
exit;
} else {// 파일이 있으면 다운로드
if(eregi("(MSIE 5.0|MSIE 5.1|MSIE 5.5|MSIE 6.0)", $_SERVER["HTTP_USER_AGENT"]) && !eregi("(Opera|Netscape)", $_SERVER["HTTP_USER_AGENT"])) {
Header("Content-type: application/octet-stream");
Header("Content-Length: ".filesize($save_name));
Header("Content-Disposition: attachment; filename=".$real_name);
Header("Content-Transfer-Encoding: binary");
Header("Pragma: no-cache");
Header("Expires: 0");
} else {
Header("Content-type: file/unknown");
Header("Content-Length: ".filesize($save_name));
Header("Content-Disposition: attachment; filename=".$real_name);
Header("Content-Description: PHP3 Generated Data");
Header("Pragma: no-cache");
Header("Expires: 0");
}
$fp = fopen($save_name, "rb");
if(!fpassthru($fp))
{
echo "ok";
fclose($fp);
}
else {
echo "error.";}
}
}else
echo " 에러";
?>
상기 다운로드 사용을 위해 하기와 같이 사용하는데요..
<a href="download.html?f="/DATA/fract60/public_html/kb/data/draft/<?=$data[no]?>/<?=$data[filename]?>&fn=<?=$data[filename]?>" target='_blank'><?=$data[filename]?></a>
여기서 f 와 fn 값이 넘어가지 않는것으로 확인되었습니다.
어떻게 해야 할까요?
php.ini 는 제가 호스팅을 받고있는 중이라 수정이 불가한 상태입니다.
echo $_GET['fn'] ;
라고 해도 나오지 않고 있구요..
다른 방법 없을까요?
다른 방법이라도 있으면 꼭좀 알려주세요
$f 대신에 $_GET['f']를
$fn 대신에 $_GET['fn']을 써보세요.