首页 > php教程 > php手册 > 正文

PHP文件下载的小实例

php中文网
发布: 2016-05-25 16:52:37
原创
1834人浏览过

这个文件下载实例做得非常的详细他是结合header函数与while fread函数把文件分断读出来然后再发送到客户端了,算得上一个标准的文件下载实例。

一个PHP文件下载的小实例

/*======================================================
$FileName 为文件名称,必传
$FilePath 为文件路径.选填,可以为相对路径或者绝对路径
  路径只能由英文跟数据组成,不能带有中文
如有问题 欢迎联系博主指出
======================================================*/
<?php
header("Content-type: text/html;charset=utf-8");
if (strlen($FileName) <= 3) {
    echo "下载失败:你所以下载的文件信息有误";
    return;
}
$FileName = iconv("utf-8", "gb2312", $FileName); //进行文件名格式转换,以防中文乱码
//开始判断路径
if (!is_null($FilePath) && strlen($FilePath) > 1) {
    if (substr($FilePath, 0, 1) == '/') { //判断是否为绝对路径
        $FilePath = $_SERVER['DOCUMENT_ROOT'] . $FilePath;
    }
    if (substr($FilePath, -1) != "/") { //检查最后是否为 / 结尾
        $FilePath = $FilePath . '/';
    }
    if (is_numeric(strpos($FilePath, ":"))) { //检查是否为绝对路径
        $FilePath = str_replace("/", "", $FilePath);
    }
} elseif (strlen($FilePath) == 1 && $FilePath != "/") {
    $FilePath = $FilePath . "/";
} else {
    $FilePath = "";
}
if (!file_exists($FilePath . $FileName)) {
    echo "下载失败:所要下载的文件未找到";
    return;
}
/*================================================
   发送下载相关的头部信息
  =================================================*/
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes"); //按照字节大小返回
header("Accept-Length: $FileSize"); //返回文件大小
header("Content-Disposition: attachment; filename=" . $FileName); //这里客户端的弹出对话框,对应的文件名
/*================================================
   开始下载相关
  =================================================*/
$FileSize = filesize($FilePath . $FileName);
$File = fopen($FilePath . $FileName, "r"); //打开文件
$FileBuff = 512;
while ($FileSize >= 0) {
    $FileSize-= $FileBuff;
    echo fread($File, $FileBuff);
}
fclose($File);
?>
登录后复制

总结

本下载实例并且支持中文文名了,在文件开头就进行了uft8编码转换了。

小邮包 包月订购包年程序
小邮包 包月订购包年程序

小邮包-包月订购包年服务网,该程序由好买卖商城开发,程序采用PHP+MYSQL架设,程序商业模式为目前最为火爆的包月订制包年服务模式,这种包年订购在国外网站已经热火很多年了,并且已经发展到一定规模,像英国的男士用品网站BlackSocks,一年的袜子购买量更是达到了1000万双。功能:1、实现多产品上线,2、不用注册也可以直接下单购买,3、集成目前主流支付接口,4、下单发货均有邮件提醒。

小邮包 包月订购包年程序 0
查看详情 小邮包 包月订购包年程序


立即学习PHP免费学习笔记(深入)”;

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号