Home > Backend Development > PHP Tutorial > Sharing several codes to implement file download function in PHP_PHP Tutorial

Sharing several codes to implement file download function in PHP_PHP Tutorial

WBOY
Release: 2016-07-13 10:29:54
Original
855 people have browsed it

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.

Copy code The code is as follows:

/**
* 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:

Copy code The code is as follows:

//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:

Copy code The code is as follows:

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

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/768142.htmlTechArticleA simple php file download source code, although it does not support breakpoint resumption, etc., but it can meet some commonly used Needed. PHP downloading files can actually be achieved with an a tag, such as a hr...
Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template