


File download function in Php realizes ultra-detailed process analysis_PHP tutorial
Analysis of the process of the client downloading files from the server:
The browser sends a request to access a certain web page in the server (such as: down.php). The code of the web page is as follows.
After the server receives the request, it immediately runs the down.php file
When running the file, the file to be downloaded must be read into the memory (here is the picture of Christmas Carnival.jpg). This action is completed here through the fopen() function
Note: Any file operation related to downloading from the server must first read the file into the memory on the server side
Now the file is already in the memory, this The file needs to be read from the memory, and this action is completed through the fread() function
It should be noted that if the file is large, the file should be divided into multiple segments and returned to the client, instead of waiting for the file to be read completely on the server. After the retrieval is completed, return it to the client all at once, because this will increase the load on the server.
So we need to set the number of bytes read once in the php code. For example, I set the number of bytes read once through $buffer=1024 in the following code. Every time it is read, the data is output (i.e. Return to the browser)
Flowchart:
header("Content-type:text/html;charset=utf-8");
// $file_name="cookie.jpg";
$file_name="Christmas Carnival.jpg";
//To solve the problem that Chinese cannot be displayed
$file_name=iconv("utf-8","gb2312",$file_name);
$file_sub_path=$_SERVER[ 'DOCUMENT_ROOT']."marcofly/phpstudy/down/down/";
$file_path=$file_sub_path.$file_name;
//First determine whether the given file exists
if(!file_exists ($file_path)){
echo "No such file";
return ;
}
$fp=fopen($file_path,"r");
$file_size=filesize( $file_path);
//The header needed to download the file
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length:".$file_size);
Header("Content-Disposition: attachment; filename=".$file_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);
?>
A few things to note:
header ("Content-type: text/html; charset=utf-8"): When the server responds to the browser's request, it tells the browser to display the content in UTF-8 encoding
About file_exists( ) function does not support Chinese paths: Because the php function is relatively early and does not support Chinese, so if the downloaded file name is in Chinese, it needs to be character encoding converted, otherwise the file_exists() function cannot recognize it, you can use iconv( ) function for encoding conversion
$file_sub_path() I use an absolute path, which is more efficient than a relative path
The role of Header("Content-type: application/octet-stream"): through this code The client browser can know the file format returned by the server
Header("Accept-Ranges: bytes"): Tell the client browser that the size of the file returned is calculated in bytes
Header( The role of "Accept-Length:".$file_size): tells the browser the size of the file returned.
The role of Header("Content-Disposition: attachment; filename=".$file_name): tells the browser the name of the file returned
The above four Header() are required
fclose($fp) can output the last remaining data in the buffer to the disk file and release the file pointer and related buffers

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

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

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

IIS and PHP are compatible and are implemented through FastCGI. 1.IIS forwards the .php file request to the FastCGI module through the configuration file. 2. The FastCGI module starts the PHP process to process requests to improve performance and stability. 3. In actual applications, you need to pay attention to configuration details, error debugging and performance optimization.

After the USDT transfer address is incorrect, first confirm that the transfer has occurred, and then take measures according to the error type. 1. Confirm the transfer: view the transaction history, obtain and query the transaction hash value on the blockchain browser. 2. Take measures: If the address does not exist, wait for the funds to be returned or contact customer service; if it is an invalid address, contact customer service and seek professional help; if it is transferred to someone else, try to contact the payee or seek legal help.

The steps to register an Ouyi account are as follows: 1. Prepare a valid email or mobile phone number and stabilize the network. 2. Visit Ouyi’s official website. 3. Enter the registration page. 4. Select email or mobile phone number to register and fill in the information. 5. Obtain and fill in the verification code. 6. Agree to the user agreement. 7. Complete registration and log in, carry out KYC and set up security measures.

Can. The two exchanges can transfer coins to each other as long as they support the same currency and network. The steps include: 1. Obtain the collection address, 2. Initiate a withdrawal request, 3. Wait for confirmation. Notes: 1. Select the correct transfer network, 2. Check the address carefully, 3. Understand the handling fee, 4. Pay attention to the account time, 5. Confirm that the exchange supports this currency, 6. Pay attention to the minimum withdrawal amount.

EU MiCA compliance certification, covering 50 fiat currency channels, cold storage ratio 95%, and zero security incident records. The US SEC licensed platform has convenient direct purchase of fiat currency, a ratio of 98% cold storage, institutional-level liquidity, supports large-scale OTC and custom orders, and multi-level clearing protection.

Binance is the overlord of the global digital asset trading ecosystem, and its characteristics include: 1. The average daily trading volume exceeds $150 billion, supports 500 trading pairs, covering 98% of mainstream currencies; 2. The innovation matrix covers the derivatives market, Web3 layout and education system; 3. The technical advantages are millisecond matching engines, with peak processing volumes of 1.4 million transactions per second; 4. Compliance progress holds 15-country licenses and establishes compliant entities in Europe and the United States.

Registering a Sesame Door Account requires 7 steps: 1. Prepare a valid email or mobile phone number and a stable network; 2. Visit the official website; 3. Enter the registration page; 4. Select and fill in the registration method; 5. Obtain and fill in the verification code; 6. Agree to the user agreement; 7. Complete registration and log in, it is recommended to carry out KYC and set security measures.

To safely download the Binance APP, you need to go through the official channels: 1. Visit the Binance official website, 2. Find and click the APP download portal, 3. Choose to scan the QR code, app store, or directly download the APK file to download to ensure that the link and developer information are authentic, and enable two-factor verification to protect the security of the account.
