background image

Php 中文件下载功能实现超详细流程分析

浏览器发送一个请求,请求访问服务器中的某个网页(如:

down.php),该网页的代码如


客户端从服务端下载文件的流程分析:

 

 
浏览器发送一个请求,请求访问服务器中的某个网页(如:

down.php),该网页的代码如

下。

 

服务器接受到该请求以后,马上运行该

down.php 文件 

运行该文件的时候,必然要把将要被下载的文件读入内存当中(这里是圣诞狂欢

.jpg 这张

图片),这里通过

fopen

()函数完成该动作 

注意:任何有关从服务器下载的文件操作,必然需要先在服务端将文件读入内存当中

 

 
现在文件已经在内存当中了,这是需要从内存当中读取文件,通过

fread

()函数完成该动作 

需要注意的是,如果文件较大,文件应该是被分成多段返回给客户端的,并不是等文件在
服务端全部读取完毕后,一次性返回给客户端,因为这样子会增加服务器的负荷。

 

所以我们需要在

php 代码中设置一次读取的字节数,比如我在下面的代码中通过

$buffer

=1024 设置一次读取的字节数,每读取一次,就输出数据(即返回给浏览器) 

 
流程图:

 

 
代码如下

:

 
<?php 
header("Content-type:text/html;charset=utf-8"); 

// $file_name="cookie.jpg"; 

$file_name

="圣诞狂欢.jpg";