IT/PHP

[PHP] 첨부파일 다운로드 소스

월공 2020. 10. 29. 08:37
728x90
300x250

최대한 간결하게 포스팅합니다

html 에서 다운로드 할 파일명과 디렉토리를 같이 download.php 로 보내서 

download.php 단에서 GET 파라미터 받아와서 합쳐갖고 다운 진행하는 부분입니다.

 

html

<a href='./download.php?file=파일명&target_Dir=디렉토리'>다운</a>

 

download.php

<?
	$filename  	= $_GET["file"];
	$target_Dir = $_GET["target_Dir"];
	$file 		= $_SERVER['DOCUMENT_ROOT']."/".$target_Dir."/".$filename;

	$filesize = filesize($file);

	if (is_file($file)) {

		header("Content-type: application/octet-stream"); 
        header("Content-Length: ".filesize("$file"));
        header("Content-Disposition: attachment; filename=$filename"); // 다운로드되는 파일명 (실제 파일명과 별개로 지정 가능)
        header("Content-Transfer-Encoding: binary"); 
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Pragma: public"); 
        header("Expires: 0"); 
	 	/*
	    if (preg_match("MSIE", $_SERVER['HTTP_USER_AGENT'])) { 
	        header("Content-type: application/octet-stream"); 
	        header("Content-Length: ".filesize("$file"));
	        header("Content-Disposition: attachment; filename=$filename"); // 다운로드되는 파일명 (실제 파일명과 별개로 지정 가능)
	        header("Content-Transfer-Encoding: binary"); 
	        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
	        header("Pragma: public"); 
	        header("Expires: 0"); 
	    }else { 
	        header("Content-type: file/unknown"); 
	        header("Content-Length: ".filesize("$file")); 
	        header("Content-Disposition: attachment; filename=$filename"); // 다운로드되는 파일명 (실제 파일명과 별개로 지정 가능)
	        header("Content-Description: PHP3 Generated Data"); 
	        header("Pragma: no-cache"); 
	        header("Expires: 0"); 
	    }
	    */
	 
	    $fp = fopen($file, "rb"); 
	    fpassthru($fp);
	    fclose($fp);
	}
	else {
	    echo "해당 파일이 없습니다.";
	}
?>

밑에 주석은 필요없어서 해놨는데 혹시 저부분에 필요한거 있으시면 해제해서 쓰시면될듯 ~

728x90
300x250