>  기사  >  백엔드 개발  >  PHP를 사용하여 브라우저 다운로드를 닫는 방법

PHP를 사용하여 브라우저 다운로드를 닫는 방법

PHPz
PHPz원래의
2023-03-29 11:33:45564검색

웹 개발에서는 브라우저가 로컬로 파일을 다운로드하도록 하는 대신 브라우저에 파일을 표시해야 하는 경우가 있습니다. 이 프로세스는 PHP 코드를 통해 수행할 수 있으며, 이 기사에서는 PHP를 사용하여 브라우저 다운로드를 끄는 방법을 자세히 설명합니다.

  1. HTTP 헤더 사용

HTTP 헤더는 HTTP 요청 및 응답의 일부이며 HTTP 응답에 필요한 정보를 포함합니다. PHP의 헤더 기능을 사용하여 브라우저에서 파일을 열 수 있도록 HTTP 헤더 파일을 설정할 수 있습니다.

다음은 헤더 기능을 사용하여 브라우저에 PDF 파일을 표시하는 방법을 보여주는 간단한 예입니다.

<?php
$file = &#39;sample.pdf&#39;;

header(&#39;Content-type: application/pdf&#39;);
header(&#39;Content-Disposition: inline; filename="&#39; . $file . &#39;"&#39;);
header(&#39;Content-Transfer-Encoding: binary&#39;);
header(&#39;Content-Length: &#39; . filesize($file));
header(&#39;Accept-Ranges: bytes&#39;);

@readfile($file);
?>

이 코드는 먼저 PDF 파일을 연 다음 헤더 기능을 사용하여 HTTP 헤더 파일을 설정합니다. 그 중 Content-type은 응답 콘텐츠가 PDF 형식임을 브라우저에 알려줍니다. Content-Disposition: inline을 사용하면 브라우저가 페이지에 파일을 인라인으로 표시할 수 있습니다. mode -Length는 응답의 데이터 크기를 지정하고 Accept-Ranges: bytes는 서버가 바이트 범위의 요청을 지원하도록 지정합니다.

마지막으로 readfile 함수를 사용하여 파일 내용을 읽고 HTML 형식으로 브라우저에 표시합니다.

  1. 다양한 파일 형식 처리

PDF 외에도 헤더 기능을 사용하여 사진, 오디오, 비디오 등과 같은 다른 형식의 파일을 표시할 수도 있습니다. Content-type에 파일 형식을 지정하기만 하면 됩니다.

다음은 몇 가지 일반적인 파일 유형과 해당 콘텐츠 유형 값입니다.

파일 유형 Content-type
Picture image/jpeg, image/png, image/gif, image / bmp
PDF application/pdf
text file text/plain
audio audio/mpeg, audio/wav
video 동영상/mp4 , video/ogg, video/webm

다음은 브라우저에 이미지를 표시하는 방법을 보여주는 예입니다.

<?php
$file = &#39;sample.jpg&#39;;

header(&#39;Content-type: image/jpeg&#39;);
header(&#39;Content-Disposition: inline; filename="&#39; . $file . &#39;"&#39;);
header(&#39;Content-Transfer-Encoding: binary&#39;);
header(&#39;Content-Length: &#39; . filesize($file));
header(&#39;Accept-Ranges: bytes&#39;);

@readfile($file);
?>
  1. Download file

파일을 브라우저에 표시하는 대신 다운로드해야 하는 경우 , Content-Disposition 헤더를 사용하여 브라우저에 파일을 다운로드하도록 지시할 수 있습니다.

다음은 브라우저에서 파일을 다운로드하는 방법을 보여주는 예입니다.

<?php
$file = &#39;sample.zip&#39;;
$filename = &#39;download.zip&#39;;

header(&#39;Content-type: application/zip&#39;);
header(&#39;Content-Disposition: attachment; filename="&#39; . $filename . &#39;"&#39;);
header(&#39;Content-Transfer-Encoding: binary&#39;);
header(&#39;Content-Length: &#39; . filesize($file));
header(&#39;Accept-Ranges: bytes&#39;);

@readfile($file);
?>

이 예에서는 브라우저가 파일을 다운로드하도록 지시하기 위해 Content-Disposition 헤더를 설정했습니다. filename 매개변수는 다운로드된 파일의 파일 이름을 지정하는 데 사용됩니다.

  1. 대용량 파일 처리

대용량 파일의 경우 성능 문제를 고려해야 하며 전체 파일을 한 번에 메모리로 읽어올 수 없습니다. 이 문제는 PHP의 출력 버퍼(ob_*)와 플러시 함수를 통해 해결될 수 있습니다. 구체적인 방법은 먼저 HTTP 헤더 파일을 출력한 다음 파일 내용을 블록별로 출력하고 플러시 기능을 사용하여 출력의 각 부분에 대한 내용을 브라우저에 푸시하는 것입니다.

다음은 대용량 파일을 처리하는 방법을 보여주는 예입니다.

<?php
$file = &#39;bigfile.zip&#39;;
$filename = &#39;download.zip&#39;;
$chunksize = 4096;

header(&#39;Content-type: application/zip&#39;);
header(&#39;Content-Disposition: attachment; filename="&#39; . $filename . &#39;"&#39;);
header(&#39;Content-Transfer-Encoding: binary&#39;);
header(&#39;Accept-Ranges: bytes&#39;);
header(&#39;Content-Length: &#39; . filesize($file));

$handle = fopen($file, &#39;rb&#39;);

while (!feof($handle)) {
    $buffer = fread($handle, $chunksize);
    echo $buffer;
    ob_flush();
    flush();
}

fclose($handle);
?>

이 예에서는 매번 4096바이트의 파일 내용을 읽은 다음 블록 단위로 출력합니다. 루프 내에서 ob_flush 및 플러시 함수를 사용하여 버퍼의 내용을 브라우저에 푸시합니다.

요약: PHP를 사용하여 브라우저 다운로드 끄기

이 기사에서는 PHP를 사용하여 파일 표시, 다양한 파일 형식 처리, 파일 다운로드 및 대용량 파일 처리를 포함하여 브라우저 다운로드를 끄는 방법을 소개했습니다. 이 지식은 웹 개발자에게 매우 중요합니다. 이 기사가 도움이 되기를 바랍니다.

위 내용은 PHP를 사용하여 브라우저 다운로드를 닫는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.