Home >Backend Development >PHP Problem >How to close browser download using php

How to close browser download using php

PHPz
PHPzOriginal
2023-03-29 11:33:45616browse

In web development, sometimes it is necessary to display files in the browser instead of letting the browser download the files locally. This process can be accomplished through PHP code, and this article will detail how to use PHP to turn off browser downloads.

  1. Using HTTP header files

The HTTP header file is part of the HTTP request and response, and it contains the information required for the HTTP response. We can use the header function in PHP to set the HTTP header file to open the file in the browser.

The following is a simple example showing how to use the header function to display a PDF file in a browser:

<?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);
?>

This code first opens a PDF file, and then uses the header function to set the HTTP header document. Among them, Content-type tells the browser that the response content is in PDF format. Content-Disposition: inline allows the browser to display the file inline in the page. Content-Transfer-Encoding: binary specifies that the file is transferred in binary mode. Content -Length specifies the data size of the response, and Accept-Ranges: bytes specifies that the server supports requests in byte ranges.

Finally, use the readfile function to read the file content and display it in the browser in HTML format.

  1. Handling different file types

In addition to PDF, we can also use the header function to display other types of files, such as pictures, audio, videos, etc. Just specify the file type in Content-type.

The following are some common file types and their Content-type values:

##Text filetext/plainAudio audio/mpeg, audio/ogg, audio/wav视频video/mp4, video/ogg, video/webm
File type Content-type
Picture image/jpeg, image/png, image/gif, image/bmp
PDF application/pdf
Here is an example showing how to display an image in the browser:

<?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);
?>
    Download file
If you need to download the file instead of Displayed in the browser, we can use the Content-Disposition header to tell the browser to download the file.

The following is an example showing how to download a file in a browser:

<?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);
?>
In this example, we set the Content-Disposition header to instruct the browser to download the file. The filename parameter is used to specify the file name of the downloaded file.

    Handling large files
For large files, we need to consider performance issues and cannot read the entire file into memory at one time. This problem can be solved through PHP's output buffer (ob_*) and flush functions. The specific method is to first output the HTTP header file, then output the file content block by block, and use the flush function to push the content to the browser for each part of the output.

The following is an example showing how to process large files:

<?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);
?>
In this example, we read the file content of 4096 bytes each time and then output it block by block. Notice that inside the loop, we use the ob_flush and flush functions to push the contents of the buffer to the browser.

Summary: Use PHP to turn off browser downloads

In this article, we introduced how to use PHP to turn off browser downloads, including displaying files, processing different file types, downloading files, and processing large files. document. This knowledge is very important for web developers. I hope this article can help you.

The above is the detailed content of How to close browser download using php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn