php文件下载步骤
2015-07-19 23:26
525 查看
代码实例:
<?php
header("Content-type:text/html;charset=utf-8");
//PHP文件下载过程,将下载过程封装成函数
//对函数的说明
//参数说明说明:
//$file_name 文件名
//$file_sub_dir: 下载文件的子路径 "/xxx/xxx/"
function down_file($file_name,$file_sub_dir){
//如果文件名称是中文,需要进行转码.
//原因 php文件函数,比较古老,需要对中文转码 gb2312,使用iconv()函数进行编码转换
$file_name=iconv("utf-8","gb2312",$file_name);
//用相对路径表示 $file_sub_dir=./wml/
//$file_path=$file_sub_dir.$file_name;
//用绝对路径表示 $file_sub_dir=/wml/
// $_SERVER['DOCUMENT_ROOT'] 表示当前运行脚本所在的文档根目录
$file_path=$_SERVER['DOCUMENT_ROOT'].$file_sub_dir.$file_name;
//绝对路径,执行效率要比相对路径高,建议使用绝对路径
//1.判断文件是否存在
if(!file_exists($file_path)){
echo "文件不存在!";
return ;
}
//2.以只读的方式,打开文件
$fp=fopen($file_path,"r");
//获取下载文件的大小
$file_size=filesize($file_path);
//防止下载大文件,括号中数字单位为字节
if($file_size>30000000){
echo "<script>window.alert('文件过大,不能下载!')</script>";
return ;
}
//下载文件需要用到的头,以下四个Header()是必需的
//通过这句代码客户端浏览器就能知道服务端返回的文件形式
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;
//这句话用于判断文件是否结束
while(!feof($fp) && ($file_size-$file_count>0) ){
//每次读取1024字节
$file_data=fread($fp,$buffer);
//统计读了多少个字节
$file_count+=$buffer;
//把部分数据回送给浏览器;
echo $file_data;
}
//关闭文件,释放资源
fclose($fp);
}
//测试函数是否可用
down_file("分单号给他人.png","/wml/");
?>
<?php
header("Content-type:text/html;charset=utf-8");
//PHP文件下载过程,将下载过程封装成函数
//对函数的说明
//参数说明说明:
//$file_name 文件名
//$file_sub_dir: 下载文件的子路径 "/xxx/xxx/"
function down_file($file_name,$file_sub_dir){
//如果文件名称是中文,需要进行转码.
//原因 php文件函数,比较古老,需要对中文转码 gb2312,使用iconv()函数进行编码转换
$file_name=iconv("utf-8","gb2312",$file_name);
//用相对路径表示 $file_sub_dir=./wml/
//$file_path=$file_sub_dir.$file_name;
//用绝对路径表示 $file_sub_dir=/wml/
// $_SERVER['DOCUMENT_ROOT'] 表示当前运行脚本所在的文档根目录
$file_path=$_SERVER['DOCUMENT_ROOT'].$file_sub_dir.$file_name;
//绝对路径,执行效率要比相对路径高,建议使用绝对路径
//1.判断文件是否存在
if(!file_exists($file_path)){
echo "文件不存在!";
return ;
}
//2.以只读的方式,打开文件
$fp=fopen($file_path,"r");
//获取下载文件的大小
$file_size=filesize($file_path);
//防止下载大文件,括号中数字单位为字节
if($file_size>30000000){
echo "<script>window.alert('文件过大,不能下载!')</script>";
return ;
}
//下载文件需要用到的头,以下四个Header()是必需的
//通过这句代码客户端浏览器就能知道服务端返回的文件形式
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;
//这句话用于判断文件是否结束
while(!feof($fp) && ($file_size-$file_count>0) ){
//每次读取1024字节
$file_data=fread($fp,$buffer);
//统计读了多少个字节
$file_count+=$buffer;
//把部分数据回送给浏览器;
echo $file_data;
}
//关闭文件,释放资源
fclose($fp);
}
//测试函数是否可用
down_file("分单号给他人.png","/wml/");
?>
相关文章推荐
- 闲聊CSDN博客积分前三名------状元:袁萌老爷子;榜眼:phphot;探花:troubleshooter
- php mysqli 查询乱码问题
- php-preg-1
- 2.5. 标准路由器:Zend_Controller_Router_Rewrite
- PHP的基本语法(一)
- 配置LMS/Studio SMTP
- PHP中类的继承关系
- 认识、安装和配置PHP
- php笔记03:布尔类型,字符串,浮点数
- Thinphp模板替换
- php empty 和空字符串区别
- FTP服务器无法访问原因
- PHP留言板制作
- 阐述php(四) 流量控制
- PHP数组的使用方法小结
- PHP中读写文件+实现代码
- PHP扩展开发之PHP的启动与终止
- php笔记02:整型细节说明
- 【thinkphp3.1.x】thinkphp3.1.x中有关file文件缓存相关的文件
- 【thinkphp3.2.x】thinkphp3.2.x中有关file文件缓存相关的文件