PHP에서 파일을 다운로드하는 방법

How Download File Php



일반적으로 확장자가 있는 파일을 다운로드하는 데 PHP 스크립트가 필요하지 않습니다. exe 그리고 지퍼 . 이 유형의 파일의 파일 위치가 href 앵커 요소의 속성을 지정하면 사용자가 다운로드 링크를 클릭할 때 파일이 자동으로 다운로드됩니다. 다음과 같은 일부 파일 영상 파일, PDF 파일, 텍스트 파일, CSV 파일 등은 자동으로 다운로드되지 않고 대신 사용자가 다운로드 링크를 클릭할 때 브라우저에서 열립니다. 이 파일은 다음을 사용하여 PHP에서 강제로 다운로드할 수 있습니다. 읽기 파일() 자동으로 다운로드되지 않는 기능. 이 튜토리얼은 PHP 스크립트를 사용하여 파일을 강제로 다운로드하는 방법을 보여줍니다.

다운로드 링크 확인

라고 앞서 언급한 바 있다. 지퍼 그리고 exe PHP 스크립트를 사용하지 않고 파일이 자동으로 다운로드됩니다. 먼저 다음 코드를 사용하여 HTML 파일을 만듭니다. 여기에서 4가지 유형의 파일을 다운로드하기 위해 4가지 앵커 요소를 정의합니다. 이러한 파일 형식에는 TEXT, ZIP, PDF 및 JPG 파일이 포함됩니다.







다운로드.html



< HTML >
< 머리 >
< 제목 >파일 다운로드</ 제목 >
</ 머리 >
< 신체 >
< NS >< 에게 href='abc.txt'>TEXT 파일 다운로드</ 에게 ></ NS >
< NS >< 에게 href='horizon.zip'>ZIP 파일 다운로드</ 에게 ></ NS >
< NS >< 에게 href='강의.pdf'>PDF 파일 다운로드</ 에게 ></ NS >
< NS >< 에게 href='rose.jpg'>JPG 파일 다운로드</ 에게 ></ NS >
</ 신체 >
</ HTML >

산출
zip 파일 링크를 클릭하면 파일을 다운로드할 수 있는 다음 대화 상자가 나타납니다. 그런 다음 사용자는 파일을 다운로드하거나 아카이브 관리자에서 파일을 열 수 있습니다.




이미지 파일을 클릭하면 다음 출력과 같이 브라우저에서 이미지가 자동으로 열립니다. 로컬 드라이브에 이미지 파일의 복사본을 만들려면 파일을 저장해야 합니다. 같은 방식으로 PDF 및 TEXT 파일 링크를 클릭하면 파일을 다운로드하지 않고 파일 내용이 브라우저에서 열립니다. 이 문제에 대한 해결책은 내장 PHP를 사용하여 강제로 파일을 다운로드하는 것입니다 파일 읽기() 기능.





readfile() 함수를 사용하여 파일 다운로드

NS 파일 읽기() 함수는 PHP 스크립트에서 현재 위치의 파일이나 파일 경로가 있는 파일을 강제로 다운로드하는 데 사용됩니다. 이 함수의 구문은 다음과 같습니다.



통사론
int readfile ( 문자열 $filename [, bool $use_include_path = false [, 리소스 $context ]] )

이 함수는 세 개의 인수를 사용할 수 있습니다. 첫 번째 인수는 필수이고 나머지 두 인수는 선택 사항입니다. 첫 번째 주장, $파일명 , 다운로드할 경로와 함께 파일 이름 또는 파일 이름을 저장합니다. 두 번째 매개변수의 기본값, $use_include_path , false이고 경로가 있는 파일 이름이 첫 번째 인수에 사용되면 true로 설정됩니다. 세 번째 주장, $context , 컨텍스트 스트림 리소스를 나타내는 데 사용됩니다. 이 함수는 첫 번째 인수에 언급된 파일에서 읽은 바이트 수를 반환합니다. 이 함수의 사용은 다음 두 가지 예에 나와 있습니다.

예 1: 파일 이름이 있는 파일 다운로드

이 예에서는 다음 코드를 사용하여 HTML 파일을 생성합니다. 여기서 파일 이름은 , 그리고 이 매개변수의 값은 다음과 같은 PHP 파일에 전달됩니다. 다운로드.php .

다운로드2.html

< HTML >
< 머리 >
< 제목 >파일 다운로드</ 제목 >
</ 머리 >
< 신체 >
< NS >< 에게 href='다운로드.php?경로=abc.txt'>다운로드텍스트파일</ 에게 ></ NS >
< NS >< 에게 href='download.php?path=horizon.zip'>ZIP 파일 다운로드</ 에게 ></ NS >
< NS >< 에게 href='download.php?path=lecture.pdf'>PDF 파일 다운로드</ 에게 ></ NS >
< NS >< 에게 href='download.php?path=rose.jpg'>JPG 파일 다운로드</ 에게 ></ NS >
</ 신체 >
</ HTML >

파일을 강제로 다운로드 하기 위해 다음 코드로 PHP 파일을 생성해 보겠습니다. 여기서, 다 쓴) 기능이 있는지 확인하는 데 사용됩니다. $_GET['경로'] 정의됩니다. 변수가 정의되면 파일이 존재() 함수는 파일이 서버에 존재하는지 확인하는 데 사용됩니다. 다음으로, 헤더() 함수를 사용하기 전에 필요한 헤더 정보를 설정하는 데 사용됩니다. 파일 읽기() 기능. NS 기본 이름() 함수는 파일 이름을 검색하는 데 사용되며, 파일 크기() 함수는 파일의 크기를 바이트 단위로 읽는 데 사용되며 파일을 다운로드하기 위한 대화 상자 열기에 표시됩니다. NS 플러시() 함수는 출력 버퍼를 지우는 데 사용됩니다. NS 파일 읽기() 함수는 여기에서 파일 이름으로만 사용됩니다.

다운로드.php



만약( 다 쓴 ($_GET['길']))
{
//파일명 읽기
$파일명 = $_GET['길'];
//파일 존재 여부 확인
만약( 파일이 존재 ($파일명)) {

//헤더 정보 정의
헤더 ('콘텐츠 설명: 파일 전송');
헤더 ('콘텐츠 유형: 애플리케이션/옥텟 스트림');
헤더 ('캐시 제어: 캐시 없음, 재검증해야 함');
헤더 ('만료: 0');
헤더 ('내용-처분: 첨부; 파일 이름=''. 기본 이름 ($파일명).'' ');
헤더 ('콘텐츠 길이: ' . 파일 크기 ($파일명));
헤더 ('프라그마: 공개');

//시스템 출력 버퍼 지우기
플러시 ();

//파일 크기 읽기
읽기 파일 ($파일명);

//스크립트에서 종료
NS ();
}
또 다른{
던졌다 '파일이 없습니다.';
}
}
또 다른
던졌다 '파일 이름이 정의되지 않았습니다.'
?>

산출
이미지 파일의 다운로드 링크를 클릭하면 다음 출력이 나타납니다. 파일 크기 rose.jpg 이미지는 27.2KB , 대화 상자에 표시된 대로. 를 선택하여 파일을 다운로드할 수 있습니다. 파일을 저장 라디오 버튼을 누르고 좋아요 단추.

예 2: 파일 경로가 있는 파일 다운로드

파일이 지정된 파일 위치에 있는 경우 URL에 파일 경로를 언급해야 합니다. 이 예에서는 파일 경로와 함께 파일 이름을 전달하는 다음 코드로 HTML 파일을 생성합니다.

다운로드3.html

< HTML >
< 머리 >
< 제목 >파일 다운로드</ 제목 >
</ 머리 >
< 신체 >
< NS >< 에게 href='download.php?path=downloads/lecture.pdf'>PDF 파일 다운로드</ 에게 ></ NS >
< NS >< 에게 href='download2.php?path=downloads/rose.jpg'>JPG 파일 다운로드</ 에게 ></ NS >
</ 신체 >
</ HTML >

다음 코드로 PHP 파일을 생성하여 파일 경로에서 파일을 다운로드합니다. 이전 예제의 PHP 코드는 주어진 경로에서 파일을 다운로드하도록 약간 수정됩니다. NS clearstatecache() 함수는 이전에 저장된 캐시를 지우는 데 사용됩니다. 두 개의 인수가 사용됩니다. 파일 읽기() 기능.

다운로드2.php


만약( 다 쓴 ($_GET['길']))
{
//URL 읽기
$url = $_GET['길'];

//캐시 지우기
지우기 캐시 ();

//파일 경로가 존재하는지 확인
만약( 파일이 존재 ($url)) {

//헤더 정보 정의
헤더 ('콘텐츠 설명: 파일 전송');
헤더 ('콘텐츠 유형: 애플리케이션/옥텟 스트림');
헤더 ('내용-처분: 첨부; 파일 이름=''. 기본 이름 ($url).'' ');
헤더 ('콘텐츠 길이: ' . 파일 크기 ($url));
헤더 ('프라그마: 공개');

//시스템 출력 버퍼 지우기
플러시 ();

//파일 크기 읽기
읽기 파일 ($url,진실);

//스크립트에서 종료
NS ();
}
또 다른{
던졌다 '파일 경로가 존재하지 않습니다.';
}
}
던졌다 '파일 경로가 정의되지 않았습니다.'

?>

산출
PDF 파일의 다운로드 링크를 클릭하면 다음과 같은 출력이 나타납니다.

비디오 자습서

결론

이 기사에서는 독자가 스크립트에 다운로드 기능을 추가할 수 있도록 PHP 스크립트를 사용하여 파일을 강제로 다운로드하는 간단한 방법을 제공했습니다.