Downloading pdf file in php

PHP Download File

Summary: in this tutorial, you will learn how to download a file in PHP using the readfile() function.

Introduction to the PHP readfile() function

The readfile() function reads data from a file and writes it to the output buffer.

Here’s the syntax of the readfile() function:

readfile ( string $filename , bool $use_include_path = false , resource $context = ? ) : int|falseCode language: PHP (php)

The readfile() function has the following parameters:

  • $filename is the path to the file.
  • $use_include_path if set to true , the function will search for the file in the include path.
  • $context specifies the stream context.

The readfile() function returns the number of bytes if it successfully reads data from the file, or false if it fails to read.

PHP download file example

The following example shows how to download the readme.pdf file using the readfile() function example.

 $filename = 'readme.pdf'; if (file_exists($filename)) < header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename hljs-string">'"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($filename)); readfile($filename); exit; >Code language: HTML, XML (xml)

PHP download file with a download rate limit

To set a download rate limit, you use the following script:

 $file_to_download = 'book.pdf'; $client_file = 'mybook.pdf'; $download_rate = 200; // 200Kb/s $f = null; try < if (!file_exists($file_to_download)) < throw new Exception('File ' . $file_to_download . ' does not exist'); > if (!is_file($file_to_download)) < throw new Exception('File ' . $file_to_download . ' is not valid'); > header('Cache-control: private'); header('Content-Type: application/octet-stream'); header('Content-Length: ' . filesize($file_to_download)); header('Content-Disposition: filename=' . $client_file); // flush the content to the web browser flush(); $f = fopen($file_to_download, 'r'); while (!feof($f)) < // send the file part to the web browser print fread($f, round($download_rate * 1024)); // flush the content to the web browser flush(); // sleep one second sleep(1); > > catch (\Throwable $e) < echo $e->getMessage(); > finally < if ($f) < fclose($f); >> Code language: HTML, XML (xml)
  • First, define the path to the file ( $file_to_download ) to download and the name of the downloaded file ( $client_file ).
  • Next, define the download rate ( $download_rate ) and set it to 200 Kb/s
  • Then, throw an exception if the file doesn’t exist or is not a regular file.
  • After that, read the part of the file and sleep for 1 second until the no more file data to read.
  • Finally, close the file using the fclose() function.

Summary

Источник

How to Download a File in PHP

Generally, no PHP script is required to download a file with the extensions exe and zip. If the file location of this type of file is set in the href attribute of the anchor element, then the file automatically downloads when the user clicks on the download link. Some files, such as image files, PDF files, text files, CSV files, etc., do not download automatically, and instead, open in the browser when the user clicks on the download link. These files can be downloaded forcibly in PHP using the readfile() function that does not download automatically. This tutorial shows you how to forcibly download any file using PHP script.

It was previously mentioned that zip and exe files download automatically, without using PHP script. First, create an HTML file with the following code. Here, the four anchor elements are defined to download the four types of files. These file types include TEXT, ZIP, PDF, and JPG files.

Download.html

Output
The following dialog box will appear to download the file after clicking the zip file link. The user can then download the file or open the file in the archive manager.

If you click on the image file, the image will be opened automatically in the browser, as shown in the following output. You must save the file to make a copy of the image file in the local drive. In the same way, when you click on PDF and TEXT file links, the content of the file will be opened in the browser without downloading the file. The solution to this problem is to download the file forcibly using the built-in PHP readfile() function.

Download File Using readfile() Function

The readfile() function is used in PHP script to forcibly download any file of the current location, or the file with the file path. The syntax of this function is given below.

Syntax
int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )

This function can take three arguments. The first argument is mandatory, and the other two arguments are optional. The first argument, $filename, stores the filename or filename with the path that will download. The default value of the second parameter, $use_include_path, is false and will be set to true if the filename with the path is used in the first argument. The third argument, $context, is used to indicate the context stream resource. This function returns the number of bytes read from the file mentioned in the first argument. The uses of this function are shown in the following two examples.

Example 1: Download File with Filename

In this example, we will create an HTML file with the following code, where the file name will be passed as a parameter of the URL named path, and the value of this parameter will be passed to the PHP file named download.php.

download2.html

We will create the PHP file with the following code to download the file forcibly. Here, the isset() function is used to check whether the $_GET[‘path’] is defined. If the variable is defined, the file_exists() function is used to check whether the file exists in the server. Next, the header() function is used to set the necessary header information before using the readfile() function. The basename() function is used to retrieve the filename, and the filesize() function is used to read the size of the file in bytes, which will be shown in the opening dialog box to download the file. The flush() function is used to clear the output buffer. The readfile() function is used with the filename only, here.

download.php

if ( isset ( $_GET [ ‘path’ ] ) )
{
//Read the filename
$filename = $_GET [ ‘path’ ] ;
//Check the file exists or not
if ( file_exists ( $filename ) ) {

//Define header information
header ( ‘Content-Description: File Transfer’ ) ;
header ( ‘Content-Type: application/octet-stream’ ) ;
header ( «Cache-Control: no-cache, must-revalidate» ) ;
header ( «Expires: 0» ) ;
header ( ‘Content-Disposition: attachment; filename=»‘ . basename ( $filename ) . ‘»‘ ) ;
header ( ‘Content-Length: ‘ . filesize ( $filename ) ) ;
header ( ‘Pragma: public’ ) ;

//Clear system output buffer
flush ( ) ;

//Read the size of the file
readfile ( $filename ) ;

//Terminate from the script
die ( ) ;
}
else {
echo «File does not exist.» ;
}
}
else
echo «Filename is not defined.»
?>

Output
The following output will appear after clicking the download link of the image file. The file size of the rose.jpg image is 27.2 KB, as shown in the dialog box. You can download the file by selecting the Save File radio button and pressing the OK button.

Example 2: Download File with File Path

If the file exists at the given file location, the file path will be required to mention in the URL. In this example, we will create an HTML file with the following code, which will pass the filename with the file path:

download3.html

We will create a PHP file with the following code to download a file from the file path. The PHP code in the previous example will be slightly modified to download the file from the given path. The clearstatecache() function is used to clear the cache that was previously stored. Two arguments are used in the readfile() function.

download2.php

if ( isset ( $_GET [ ‘path’ ] ) )
{
//Read the url
$url = $_GET [ ‘path’ ] ;

//Check the file path exists or not
if ( file_exists ( $url ) ) {

//Define header information
header ( ‘Content-Description: File Transfer’ ) ;
header ( ‘Content-Type: application/octet-stream’ ) ;
header ( ‘Content-Disposition: attachment; filename=»‘ . basename ( $url ) . ‘»‘ ) ;
header ( ‘Content-Length: ‘ . filesize ( $url ) ) ;
header ( ‘Pragma: public’ ) ;

//Clear system output buffer
flush ( ) ;

//Read the size of the file
readfile ( $url , true ) ;

//Terminate from the script
die ( ) ;
}
else {
echo «File path does not exist.» ;
}
}
echo «File path is not defined.»

Output
After the download link of the PDF file is clicked, the following output will appear.

Video Tutorial

Conclusion

This article provided a simple way to forcibly download any file using the PHP script, to help readers to add the download feature in their script.

About the author

Fahmida Yesmin

I am a trainer of web programming courses. I like to write article or tutorial on various IT topics. I have a YouTube channel where many types of tutorials based on Ubuntu, Windows, Word, Excel, WordPress, Magento, Laravel etc. are published: Tutorials4u Help.

Источник

Download PDF Files in HTML With PHP

Download PDF Files in HTML With PHP

  1. Syntax of the header() Function in PHP
  2. Download PDF With HTML Link Using PHP

This tutorial will discuss the steps to make your PDF files downloadable in HTML links with PHP. We will use the PHP header() function to prompt users to save our PDF file.

Syntax of the header() Function in PHP

The header below will download any application.

header("Content-Type: application/octet-stream"); 

The header below will set the composition and the downloadable file.

header('Content-Disposition: attachment; filename="Delft.pdf"'); 

The header below shows the file’s size.

header("Content-Length: " . filesize("Delft.pdf")); 

We will attempt to download a PDF( Delft.pdf ) in HTML with a PHP script in the following example. The Delft.pdf file is empty and will show an error upon opening, and we’ll give you a picture of how we go about the process.

Example Code — HTML script:

 html>  head>  title>Download PDF using PHP from HTML Linktitle>  head>  body>  center>  h2 style="color:red;">Welcome To DELFTh2>  p>b>Click below to download PDFb>p>  a href="downloadpdf.php?file=Delft">Download PDF Nowa>  center>  body>  html> 
php $file = $_GET["file"] .".pdf"; // To Output a PDF file  header('Content-Type: application/pdf'); // PDF will be called Delft.pdf  header('Content-Disposition: attachment; filename="Delft.pdf"'); $imagpdf = file_put_contents($image, file_get_contents($file)); echo $imagepdf; ?> 

Download PDF in HTML Link with a PHP script

Download PDF in HTML Link with a PHP script output

The link will download a Delft.pdf file, but since the file is empty, we will get an error when trying to open it. That is the basic concept of downloading PDF files in HTML links with PHP.

Let’s try downloading and reading the Delft.pdf file from our local machine. In the next example, we will attempt to download a PDF file locally with an HTML link.

Example Code — HTML Script:

 html>  head>  title>Download PDF using PHP from HTML Linktitle>  head>  body>  center>  h2 style="color:blue;">Welcome To DELFTSTACKh2>  p>b>Click below to download PDFb>p>  a href="downloadpdf.php?file=Delft">Download PDF Nowa>  center>  body>  html> 
php header("Content-Type: application/octet-stream"); $file = $_GET["file"] . ".pdf"; header("Content-Disposition: attachment; filename=" . urlencode($file)); header("Content-Type: application/download"); header("Content-Description: File Transfer"); header("Content-Length: " . filesize($file)); flush(); // Not a must.  $fp = fopen($file, "r"); while (!feof($fp))  echo fread($fp, 65536); flush(); // This is essential for large downloads  > fclose($fp); ?> 

download a PDF file locally with a HTML link

download a PDF file locally with a HTML link output

The link will download the Delft.pdf file, and we successfully open the file. Always call headers before sending output.

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

Related Article — PHP Download

Источник

Читайте также:  Средства обмена данными java
Оцените статью