천상나타의 일상다반사

닫기 검색결과 전체 보기

    PHP에서 텍스트 파일 생성 및 다운로드하기

    IT/Server 2024. 6. 26. 16:31

    럭키-[이모티콘]어밴드

     

    소개

    웹 개발에서는 동적으로 파일을 생성하고 다운로드해야 하는 상황이 자주 발생합니다. 이 튜토리얼에서는 배열 데이터를 텍스트 파일로 생성하고, 사용자가 이를 다운로드할 수 있도록 하는 간단한 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라는 텍스트 파일을 다운로드하라는 메시지를 받게 됩니다.

    728x90

    '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
    'IT/Server' 관련 글 more
    • Jenkins에서 SSH를 사용해 원격 서버 명령 실행하기: jenkins 사용자 설정 가이드 2024.11.05
    • thumbnail
      Nginx 오류 해결: "could not build server_names_hash, you should increase server_names_hash_bucket_size: 64" 2024.06.27
    • thumbnail
      Telnet을 사용하여 열린 포트 확인하는 방법: IP 주소와 포트 테스트하기 2024.06.26
    • thumbnail
      Git 특정계정으로 Pull 받는 방법 2024.06.26
    Posted by 천상나타.

Naver Neighborhood

    최근...

  • 포스트
  • 댓글
  • 더 보기

글 보관함

«   2026/11   »
일 월 화 수 목 금 토
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

카테고리

분류 전체보기 (415)
IT (144)
JAVA (20)
JSP (5)
NoSql (8)
Linux (5)
javaScript (15)
Oracle (7)
MySql (2)
Android (1)
Spring (8)
Server (26)
System (14)
Tool (33)
공부자료(비공개) (0)
일상 (259)
맛집 (69)
국내여행 (21)
해외여행 (32)
우리집 고양이 쪼꼬 (4)
디저트&야식 (49)
영화 후기 (2)
제품리뷰 (5)
추천노래 (3)
취미 (74)
다이어트 (0)
유용한정보 (10)
블로그팁 (8)
지역정보 (1)
자격증 (1)

카운터

Total
Today
Yesterday
  • 네이버 이웃추가
  • 방명록
개인정보처리방침
천상나타.'s Blog is powered by daumkakao
블로그 이미지

천상나타의 일상다반사

IT정보공유 및 일상다반사

  • 네이버 이웃추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 분류 전체보기 (415) N
    • IT (144) N
      • JAVA (20)
      • JSP (5)
      • NoSql (8)
      • Linux (5)
      • javaScript (15) N
      • Oracle (7)
      • MySql (2)
      • Android (1)
      • Spring (8)
      • Server (26) N
      • System (14)
      • Tool (33) N
      • 공부자료(비공개) (0)
    • 일상 (259)
      • 맛집 (69)
      • 국내여행 (21)
      • 해외여행 (32)
      • 우리집 고양이 쪼꼬 (4)
      • 디저트&야식 (49)
      • 영화 후기 (2)
      • 제품리뷰 (5)
      • 추천노래 (3)
      • 취미 (74)
      • 다이어트 (0)
    • 유용한정보 (10) N
      • 블로그팁 (8) N
      • 지역정보 (1)
      • 자격증 (1) N

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바