Notice
Recent Posts
Recent Comments
Tags
- php 캐쉬제거
- jquery 바코드
- 하드 윈도우 복사
- 맥 오라클설치
- javascript 유효성체크
- 하드 마이그레이션
- ASP.Net Core 404
- javascript 바코드스캔
- Mac Oracle
- XSS PHP
- javascript redirection
- 404에러페이지
- 말줄임표시
- 바코드 생성하기
- 파일업로드 체크
- asp.net core Select
- 파일업로드 유효성체크
- jquery 바코드생성
- 강제이동
- django 엑셀불러오기
- javascript 바코드 생성
- ViewBag
- asp.net Select
- 바코드 스캔하기
- XSS방어
- TempData
- ViewData
- asp.net dropdownlist
- 타임피커
- SSD 복사
웹개발자의 기지개
[PHP] 파일 다운로드시 특정파일명으로 변경하여 다운로드 받고 싶을때(한글명) 본문
파일 다운로드시에 원래파일이 1727191732_1082.mp4 인데, 다운로드시에 음악1.mp4 형태로 특정 파일명으로 변경하여 다운로드 받고 싶을때, php download 파일을 아래와 같이 이용하면 해결된다.
<a href="download4.php?fn=1727191732_1082.mp4&fn2=%EC%9D%8C%EC%95%851.mp4&dir=upfile&ext=1" download="음악1.mp4">파일다운로드</a>
<a href="download4.php?fn=<?=urlencode($filename)?>&fn2=<?=urlencode($origin_filename)?>&dir=upfile&ext=1" download="<?=$origin_filename?>"> 파일다운로드 </a>
DB 내에 $filename (업로드된 파일명), $origin_filename (실제 파일명) 형태로 구분하여 넣어둔다.
[ download4.php ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
<?
$dir = $_GET['dir'];
$fn = $_GET['fn'];
$fn2 = $_GET['fn2'];
/*
if(preg_match("/[\xA1-\xFE][\xA1-\xFE]/", $fn)) { // 한글이면 true 반환
$fn = iconv("UTF-8", "EUC-KR", $fn);
}
*/
//$fn = iconv("cp949", "UTF-8", $fn);
if (preg_match("/^utf/i", "utf-8"))
$fn = urlencode($fn);
/*
if ($dir == "qna") {
$furl = "../pds/board_qna_data/$dir/";
} else if ($dir == "report") {
$furl = "../pds/board_report_data/$dir/";
} else if ($dir == "news") {
$furl = "../pds/board_news_data/$dir/";
} else if ($dir == "reserve") {
$furl = "../pds/board_reserve_data/$dir/";
}
*/
$furl = "../pds/". $dir;
if ($ext == 1) { $ftype = "file/unknown"; }
else { $ftype = "application/octet-stream"; }
Header("Content-Disposition: attachment; filename=$fn2");
//Header("Content-Type: $ftype");
header("content-type: file/unknown");
Header("Content-Length: ".filesize("$furl/$fn"));
Header("Pragma: no-cache");
Header("Expires: 0");
if ($fp = fopen("$furl/$fn", "r")) {
print fread($fp, filesize("$furl/$fn"));
}
fclose($fp);
exit();
?>
|
cs |
위 소스를 보면
Header("Content-Disposition: attachment; filename=$fn2"); 부분에서 원하는 파일명으로 연결시켜 주면 된다.
'PHP' 카테고리의 다른 글
[PHP] 네이버에디터2 폴더변경시 수정사항 (0) | 2024.09.12 |
---|---|
[PHP] GET방식의 파일다운로드 파일만들때 보안강화하기 (1) | 2024.07.14 |
[PHP] 실무팁 10 - 코드번호 만들기 (0) | 2024.07.09 |
[PHP] 유용한 실무팁 9 - 휴대폰 본인 인증 작업하기 (0) | 2024.07.04 |
[PHP] 유용한 실무팁 8 - Ajax, Json 형태로 연동하기 (0) | 2024.07.02 |
Comments