게시판같은곳에 파일을 첨부할때 파일이름에 .(쩜)이 두개 이상 붙으면
다운받을때 브라우저에서 파일이름에 [1]같은것을 붙혀버립니다.
(예를들면 xxx.tar.z같은 파일을 다운받을때 xxx[1].tar.z 로 바뀌어버림)
이러한 문제를 해결하고 싶으시면 아래 간단한 팁을 이용하시면 됩니다.
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")){
$파일이름 = preg_replace('/\./', '%2e', $서버에저장된파일이름, substr_count($서버에저장된파일이름, '.') - 1);
}
아래는 파일 다운로드 페이지 구현시 실제 사용예제입니다.
/********************************** 예제 *******************************************/
// 파일열기모드 옵션값
$dn = 1; // 1 : 다운 0 : 실행
$dn_yn = ($dn) ? "attachment" : "inline";
// 디렉토리 정보
$dir = "/파일이저장된경로/";
// 서버에 저장된 파일명
$filen=" "
// 서버 저장되기 전 실제 파일명
$filen2=" ";
// 서버에 저장된 경로명+파일명
$file = $dir.$filen;
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")){
$dnfile = preg_replace('/\./', '%2e', $filen2, substr_count($filen2, '.') - 1);
}
if(eregi("(MSIE 5.0|MSIE 5.1|MSIE 5.5|MSIE 6.0)", $HTTP_USER_AGENT))
{
if(strstr($HTTP_USER_AGENT, "MSIE 5.5"))
{
Header("Content-Type: doesn/matter");
Header("Content-disposition: filename=$dnfile");
Header("Content-Transfer-Encoding: binary");
Header("Pragma: no-cache");
Header("Expires: 0");
}
if(strstr($HTTP_USER_AGENT, "MSIE 5.0"))
{
Header("Content-type: file/unknown");
Header("Content-Disposition: $dn_yn; filename=$dnfile");
Header("Content-Description: PHP3 Generated Data");
Header("Pragma: no-cache");
Header("Expires: 0");
}
if(strstr($HTTP_USER_AGENT, "MSIE 5.1"))
{
Header("Content-type: file/unknown");
Header("Content-Disposition: $dn_yn; filename=$dnfile");
Header("Content-Description: PHP3 Generated Data");
Header("Pragma: no-cache");
Header("Expires: 0");
}
if(strstr($HTTP_USER_AGENT, "MSIE 6.0"))
{
Header("Cache-Control: ");
Header("Pragma: ");
Header("Content-type: application/x-msdownload");
Header("Content-Length: ".(string)(filesize("$file")));
Header("Content-Disposition: $dn_yn; filename=$dnfile");
Header("Content-Transfer-Encoding: binary");
Header("Pragma: no-cache");
Header("Expires: 0");
}
}
else
{
Header("Cache-Control: ");
Header("Pragma: ");
Header("Content-type: file/unknown");
Header("Content-Length: ".(string)(filesize("$file")));
Header("Content-Disposition: $dn_yn; filename=$dnfile");
Header("Content-Description: PHP3 Generated Data");
Header("Pragma: no-cache");
Header("Expires: 0");
}
if(is_file($file))
{
$fp = fopen($file, "rb");
if (!fpassthru($fp))
fclose($fp);
}
else
{
echo "해당 파일이나 경로가 존재하지 않습니다.";
}
?>
'Coding' 카테고리의 다른 글
2. Django 설치편 (0) | 2018.12.14 |
---|---|
1. Django 개념알기 (0) | 2018.12.06 |
[PHP] DB 내용 CSV 포멧 파일로 저장하기 (0) | 2017.01.07 |
[PHP] Whois 조회 코드 (0) | 2017.01.07 |
웹디자이너와 프로그래머가 사이 좋게 코딩하는 방법 (0) | 2017.01.07 |