웹페이지에서 A 태그 링크를 클릭했을 때 파일다운로드 처리하고자 한다.
파일이 같은 서버에 있어서 URL 이 동일할 경우 A 태그 옵션인 download 를 사용하면 된다고 하는데
불행히도 같은 서버가 아닌 원격서버에서 다운로드 할 경우이다.
방법은 a 태그 클릭 시 실행 할 페이지를 만들어 아래처럼 코딩해주면 된다.
//원격에 있는 파일다운로드 처리 (FOPEN) ------------------------------------------------------------
$fileUrl = 'https://test.com/test.mp4';
$fileName = pathinfo($fileUrl, PATHINFO_BASENAME);
// 원격 파일 열기
$remoteStream = fopen($fileUrl, 'rb');
if (!$remoteStream) {
die('원격 파일을 열 수 없습니다.');
}
// 헤더 설정 (다운로드 강제)
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
// 원격 파일을 출력 스트림으로 복사
fpassthru($remoteStream);
fclose($remoteStream);
exit;
//원격에 있는 파일다운로드 처리 (CURL) ------------------------------------------------------------
$fileUrl = 'https://test.com/test.mp4';
$fileName = pathinfo($fileUrl, PATHINFO_BASENAME);
// 원격 파일 열기
$remoteStream = fopen($fileUrl, 'rb');
if (!$remoteStream) {
die('원격 파일을 열 수 없습니다.');
}
// 헤더 설정 (다운로드 강제)
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
// 원격 파일을 출력 스트림으로 복사
fpassthru($remoteStream);
fclose($remoteStream);
//로컬에 있는 파일다운로드 ------------------------------------------------------------
$filePath = 'path/to/video.mp4';
$fileName = 'video.mp4';
if (file_exists($filePath)) {
// 다운로드 강제 헤더 설정
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream'); // 또는 video/mp4
header('Content-Disposition: attachment; filename="' . basename($fileName) . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filePath));
// 파일 읽어서 전송
readfile($filePath);
exit;
} else {
echo "파일이 존재하지 않습니다.";
}
'기타' 카테고리의 다른 글
디데이 계산하기 (0) | 2025.04.23 |
---|---|
사진 얼굴교환 AI 서비스 추천 - FaceSwap (0) | 2025.04.18 |
플스플러스 4월 월간게임 - PS PLUS (3) | 2025.04.08 |
insert 쿼리시 auto_increment 되는 값 가져오기 (0) | 2025.04.07 |
2차원 배열 일치하는지 비교하기 (0) | 2025.04.04 |