PHP에서 텍스트 파일 생성 및 다운로드하기
소개
웹 개발에서는 동적으로 파일을 생성하고 다운로드해야 하는 상황이 자주 발생합니다. 이 튜토리얼에서는 배열 데이터를 텍스트 파일로 생성하고, 사용자가 이를 다운로드할 수 있도록 하는 간단한 PHP 스크립트를 설명합니다.
PHP 스크립트
다음은 우리가 논의할 PHP 스크립트입니다:
<?php
$dataSet = ['https://example.com', 'https://example.org', 'https://example.net'];
$file_content = implode(PHP_EOL, $dataSet);
// Setting headers for file download
header('Content-Type: text/plain');
header('Content-Disposition: attachment; filename="urls.txt"');
header('Content-Length: ' . strlen($file_content));
header('Pragma: no-cache');
header('Expires: 0');
// Outputting the file content
echo $file_content;
exit();
?>
이 스크립트가 하는 일과 그 작동 방식을 단계별로 살펴보겠습니다.
단계별 설명
1. 데이터 준비
$dataSet = ['https://example.com', 'https://example.org', 'https://example.net'];
여기서는 $dataSet이라는 배열을 정의하여 여러 URL을 포함시킵니다. 이 배열은 텍스트 파일에 작성될 데이터를 나타냅니다.
2. 파일 내용 생성
$file_content = implode(PHP_EOL, $dataSet);
implode 함수는 배열의 요소를 하나의 문자열로 결합합니다. PHP_EOL은 플랫폼에 적합한 줄바꿈 문자를 나타내는 PHP의 사전 정의된 상수입니다. 이를 통해 배열의 각 URL이 텍스트 파일의 새로운 줄에 위치하게 됩니다.
3. 파일 다운로드를 위한 헤더 설정
생성된 내용을 파일로 다운로드하도록 브라우저에 지시하려면 여러 HTTP 헤더를 설정해야 합니다:
header('Content-Type: text/plain');
이 헤더는 파일의 MIME 타입을 지정합니다. 여기서는 텍스트 파일을 생성하므로 text/plain으로 설정합니다.
header('Content-Disposition: attachment; filename="urls.txt"');
Content-Disposition 헤더는 브라우저에 파일을 첨부 파일로 다운로드하도록 지시하며, filename 매개변수는 파일의 이름을 지정합니다.
header('Content-Length: ' . strlen($file_content));
Content-Length 헤더는 파일의 크기를 바이트 단위로 지정합니다. strlen 함수를 사용하여 파일 내용의 길이를 계산합니다.
header('Pragma: no-cache'); header('Expires: 0');
이 헤더들은 브라우저가 파일을 캐시하지 않도록 설정합니다. 이를 통해 사용자가 항상 최신 버전의 파일을 다운로드하도록 합니다.
4. 파일 내용 출력
echo $file_content; exit();
마지막으로 echo를 사용하여 파일 내용을 출력합니다. exit() 함수는 스크립트를 즉시 종료하여 추가 출력을 방지합니다.
전체 코드
이 PHP 스크립트를 서버에서 실행하고 브라우저로 접근하면, 사용자는 $dataSet 배열에 지정된 URL을 각 줄에 포함한 urls.txt라는 텍스트 파일을 다운로드하라는 메시지를 받게 됩니다.
'IT > Server' 카테고리의 다른 글
Jenkins에서 SSH를 사용해 원격 서버 명령 실행하기: jenkins 사용자 설정 가이드 (4) | 2024.11.05 |
---|---|
Nginx 오류 해결: "could not build server_names_hash, you should increase server_names_hash_bucket_size: 64" (0) | 2024.06.27 |
Telnet을 사용하여 열린 포트 확인하는 방법: IP 주소와 포트 테스트하기 (0) | 2024.06.26 |
Git 특정계정으로 Pull 받는 방법 (0) | 2024.06.26 |
docker 및 docker-compose 설치 가이드 (0) | 2023.08.21 |