西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > php教程 > php教程 >

关于http协议请求响应的问题。

时间:2016-12-26 23:18来源:未知 作者:好模板编辑 点击:
下面是在filedown.php文件中,演示访问一个网页,自动弹出一个下载框 $file_name=sunset.jpg; if(!file_exists($file_name)){ echo 文件不存在; return; } //1.打开文件 $fp=fopen($file_name,r); //获取下载文件的大
下面是在filedown.php文件中,演示访问一个网页,自动弹出一个下载框 
$file_name="sunset.jpg"; 
if(!file_exists($file_name)){ 
echo "文件不存在"; 
return; 
//1.打开文件 
$fp=fopen($file_name,"r"); 
 
//获取下载文件的大小 
$file_size=filesize($file_name); 
 
//返回的文件 
header("Content-type:application/octet-stream"); 
//按照字节大小来返回的 
header("Accept-Ranges:bytes"); 
//返回文件大小 
header("Accept-Length:$file_size"); 
//这里客户端的弹出对话框,对应的文件名 
header("Content-Disposition:attachment;filename=".$file_name); 
 
//向客户端回送数据 
$buffer=1024; 
//这句话用于判断文件是否结束 
while(!feof($fp)){ 
$file_data=fread($fp,$buffer); 
//把部分数据回送给浏览器 
echo $file_data; 
//关闭文件 
fclose($fp); 
 
我的问题有点乱有点多,希望大神能帮我详解一下: 
1.if(!file_exists($file_name)){ 
echo "文件不存在"; 
return;           这里判断文件是否存在,不存在用return;为了防止代码继续执行下去?可以用exit();die()这些吗,有什么区别吗?return;又代表什么意思?返回空值的意思? 
 
2.这里希望大神详细解说一下:我在浏览器输入http://localhost/http/filedown.php。它接下来的步骤是怎么样的。。   
浏览器向服务器发送http协议,然后浏览器会将协议转变成http请求,然后服务器接收请求会对它进行二次封装。。。然后做出响应???响应什么??。。。。好乱,这部分完全不懂,看视频也不懂,,,它返回给客户端的是filedown.php里面的代码吗?然后读取那个sunset.php图片又是谁来的。。。。我自己都说不清楚了
 
回复讨论(解决方案)
1、在你这里 return、die、exit 都是同义词——结束程序的运行 
2、在浏览器输入http://localhost/http/filedown.php 
浏览器向 localhost 主机 发送这样的 http 请求
GET /http/filedown.php HTTP/1.0
Host: localhost
Connection: Close
 
然后等待返回 
 
web 服务器收到请求后,看到请求的文件后缀是 php。于是就启动一个 php 进(线)程,并将文件名 /http/filedown.php 传递过去(形如这样 php /http/filedown.php) 
并等待 php 执行结束后,将 php 的所有输出内容,发还给浏览器 
 可以用exit 或die 
(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容