


Sharing several codes to implement file download function in PHP_PHP Tutorial
A simple php file downloads the source code. Although it does not support breakpoint resumption, etc., it can meet some common needs. PHP downloading files can actually be achieved with an a tag, such as magento-1.8.1.0.zip. But if you encounter some formats that the browser can recognize, such as .txt, .html, .pdf, etc., then use abc.txt I guess you know what will happen. What's up.
/**
* File download
*
**/
header("Content-type:text/html;charset=utf-8");
download('web/magento-1.8.1.0.zip', 'magento download');
function download($file, $down_name){
$suffix = substr($file,strrpos($file,'.')); //Get the file suffix
$down_name = $down_name.$ suffix; //The new file name is the name after downloading
//Judge whether the given file exists
if(!file_exists($file)){
die("The file you want to download no longer exists, it may have been deleted");
}
$fp = fopen($file,"r");
$file_size = filesize($file);
//Headers needed to download files
header("Content- type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length:".$file_size);
header("Content-Disposition: attachment; filename=".$down_name);
$buffer = 1024;
$file_count = 0;
//Return data to the browser
while(!feof($fp) && $file_count < $file_size){
$file_con = fread($fp,$buffer);
$file_count += $buffer;
echo $file_con;
}
fclose($fp) ;
}
?>
You can also take a look at this code with more detailed comments:
//File download, download a picture
//$file_name="Angel.mp3";
$file_name="bjnihao.jpg"; //The Chinese program cannot complete the download prompt: the file does not exist
//Transcode the file (the PHP file function is relatively old and needs to convert the Chinese code into gb2312)
//iconv — Convert string to requested character encoding
//by www.jb51.net
$file_name=iconv("utf-8","gb2312",$file_name);
//Set the file download path (relative path)
//$file_path="./dowm/".$file_name;
//Use absolute path
$file_path=$_SERVER['DOCUMENT_ROOT']."/http/dowm/".$file_name;
//Open the file---judge first and then operate
if(!file_exists($file_path)){
echo "The file does not exist";
return ; //Exit directly
}
//Exists--open file
$fp=fopen($file_path,"r");
//Get the file size
$file_size=filesize($file_path);
//Response header required for http download
header("Content-type: application/octet-stream"); //Returned file
header("Accept-Ranges: bytes"); // Return
header("Accept-Length: $file_size"); //Return file size according to byte size
header("Content-Disposition: attachment; filename=".$file_name); //Here the client's A dialog box pops up, corresponding file name
//Return data to the client
//Set the size output
$buffer=1024;
//For download safety, we'd better make a file byte reading counter
$file_count=0;
//Determine whether the file pointer has reached the end of the file (whether the reading of the file has ended)
while(!feof($fp) && ($file_size-$file_count)>0){
$file_data=fread($fp,$buffer);
//Count the number of bytes read
$file_count+=$buffer;
//Return part of the data to the browser
echo $file_data;
}
//Close file
fclose($fp);
?>
Packaging function:
/*
Package function:
Parameter description----$file_name: file name
$file_sub_dir: sub-path for file download
*/
function file_dowm($file_name,$file_sub_dir){
//File transcoding
$file_name=iconv("utf-8","gb2312",$file_name);
//Use absolute path
$file_path=$_SERVER['DOCUMENT_ROOT']."$file_sub_dir".$file_name;
//Open the file---judge first and then operate
if(!file_exists($file_path)){
echo "The file does not exist";
return ; //Exit directly
}
//Exists--open file
$fp=fopen($file_path,"r");
//Get the file size
$file_size=filesize($file_path);
/*
//Here You can set the maximum size that cannot be downloaded
if($file_size>50){
echo "The file is too large and cannot be downloaded";
return ;
}*/
//Response header required for http download
header("Content-type: application/octet-stream"); //Returned file
header("Accept-Ranges: bytes"); // Return
header("Accept-Length: $file_size"); //Return file size according to byte size
header("Content-Disposition: attachment; filename=".$file_name); //Here the client's A dialog box pops up, corresponding file name
//Return data to the client
//Set size output
$buffer=1024;
//For download safety, we'd better make a file byte reading counter
$file_count=0;
//Judge whether the file pointer has reached the end of the file (whether the reading of the file has ended)
while(!feof($fp) && ($file_size-$file_count)>0){
$file_data=fread($fp,$buffer);
//Count the number of bytes read
$file_count+=$buffer;
//Return part of the data to the browser
echo $file_data;
}
//Close the file
fclose($fp);
}
file_dowm("bjnihao.jpg","/http/dowm/");
?>
Another code:
public function downloads($name){
$name_tmp = explode("_ ",$name);
$type = $name_tmp[0];
$file_time = explode(".",$name_tmp[3]);
$file_time = $file_time[0];
$file_date = date("Y/md",$file_time);
$file_dir = SITE_PATH."/data/uploads/$type/$file_date/";
if (!file_exists( $file_dir.$name)){
header("Content-type: text/html; charset=utf-8");
echo "File not found!";
exit;
} else {
$file = fopen($file_dir.$name,"r");
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes ");
Header("Accept-Length: ".filesize($file_dir . $name));
Header("Content-Disposition: attachment; filename=".$name);
echo fread ($file, filesize($file_dir.$name));
fclose($file);
}
}

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

In this chapter, we will understand the Environment Variables, General Configuration, Database Configuration and Email Configuration in CakePHP.

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

To work on file upload we are going to use the form helper. Here, is an example for file upload.

In this chapter, we are going to learn the following topics related to routing ?

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

Validator can be created by adding the following two lines in the controller.

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c
