下面是在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
(责任编辑:好模板) |