반응형

첨부된 파일을 다운로드 받을때 파일이 저장된 경로를 보여주지 않고 특정한 파일을 통해서 다운로드 받게 하는 경우가 있다. 링크로 본다면 이렇게 될것이다.

 

/download.php?id=1

이런식으로 개발자만 알 수 있는 아이디값을 받아서 디비에서 조회하거나 해서 filename과 filepath를 알아내어 사용자에게 보여주면 된다. 이렇게하면 해당 파일이 어디에 저장돼 있는지 사용자들은 확인할 수 없게 된다.

 

<img src="/download.php?id=1">

 

이렇게 이미지 태그에도 사용할 수 있다. 보안을 위해서 이렇게 쓰는걸 추천하는 경우도 있다.

 

download.php

<?php
 
 header("content-type: file/unknown");
 header("content-length: ".filesize($_SERVER["DOCUMENT_ROOT"].$filepath));
 header("content-disposition: attachment; filename=".$filename);
 header("content-description: php generated data");
 header("pragma: no-cache");
 header("expires: 0");

 if($fp = fopen($_SERVER["DOCUMENT_ROOT"].$filepath, 'rb')){
     while(!feof($fp)) {
          print(fread($fp,1024));
          flush();
     }
     fclose($fp);
 } else {
     print('파일을 찾을 수 없습니다.');
 }
?>
반응형

+ Recent posts