用PHP实现文件下载

下载

如果只是普通的文件下载,完全没有必要用到php,用个<A href='http://xx.xx.com/xx.tar'></a>就可以,但是有的时候为让文件保密,只能给一部分人下载,显然不能够把链节告诉别人,如果是这样哪就起不到保密的效果。
下面这个函数就是一个用php写的文件下载的函数,它是把文件一段一段地读出来,再传送给客户端.

function download($file_dir,$file_name)
//参数说明:
//file_dir:文件所在目录
//file_name:文件名
{
    $file_dir = chop($file_dir);//去掉路径中多余的空格
    //得出要下载的文件的路径
    if($file_dir != '')
    {
        $file_path = $file_dir;
        if(substr($file_dir,strlen($file_dir)-1,strlen($file_dir)) != '/')
            $file_path .= '/';
        $file_path .= $file_name;
    }           
    else
        $file_path = $file_name;   
   
    //判断要下载的文件是否存在
    if(!file_exists($file_path))
    {
        echo '对不起,你要下载的文件不存在。';
        return false;
    }

    $file_size = filesize($file_path);
 
    header("Content-type: application/octet-stream");
    header("Accept-Ranges: bytes");
    header("Accept-Length: $file_size");
    header("Content-Disposition: attachment; filename=".$file_name);
   
    $fp = fopen($file_path,"r");
    $buffer_size = 1024;
    $cur_pos = 0;
   
    while(!feof($fp)&&$file_size-$cur_pos>$buffer_size)
    {
        $buffer = fread($fp,$buffer_size);
        echo $buffer;
        $cur_pos += $buffer_size;
    }
   
    $buffer = fread($fp,$file_size-$cur_pos);
    echo $buffer;
    fclose($fp);
    return true;

}

时间: 2024-10-04 17:29:20

用PHP实现文件下载的相关文章

python网络编程之文件下载实例分析

  本文实例讲述了python网络编程之文件下载实现方法.分享给大家供大家参考.具体如下: 真是越看越喜欢python啊,想要了解它提供的http和ftp下载功能,原来是如此的简单. 1.相应模块 ftplib模块定义了FTP类和一些方法,用以进行客户端的ftp编程.我们可用python编写一个自已的ftp客户端程序,用于下载文件或镜像站点.如果想了解ftp协议的详细内容,请参考RFC959或是查看python帮助吧. Urllib模块提供了非常高级的接口来从网络上抓取数据,主要使用到的是url

用Jsp来实现文件下载功能的几种方式

1.最直接最简单的,方式是把文件地址直接放到html页面的一个链接中.这样做的缺点是把文件在服务器上的路径暴露了,并且还无法对文件下载进行其它的控制(如权限).这个就不写示例了. 2.在服务器端把文件转换成输出流,写入到response,以response把文件带到浏览器,由浏览器来提示用户是否愿意保存文件到本地.(示例如下) <%response.setContentType(fileminitype);response.setHeader("Location",filenam

迅雷怎么做文件下载的服务器

问题描述 迅雷怎么做文件下载的服务器 大家好听说迅雷可以作为下载服务器请问有人做过吗?有没有思路什么的谢谢! 解决方案 是否要有个会员帐号才行呀.知道离线文件地址.之后的应该不难.

把存储在SQL7的image字段的文件下载到客户端的ASP源代码

客户端|下载|源代码 把存储在SQL7的image字段的文件下载到客户端的ASP源代码 文 件 名:download.asp 使用方法:download.asp?fid=xxx说 明:把SQL7的image字段存储的文件下载到客户端数据库结构:[表名]tabimage {fid int not null;filename varchar(100) not null;filecontent image not null}fid:文件id [PK]:filename:文件名:filecontent:

android系统文件下载二次请求

问题描述 android系统文件下载二次请求 应客户要求在通过手机访问系统主页时提供一个文件下载的功能.通过IOS产品.windows下所有浏览器下载都没有问题,但是通过android系统的手机访问下载时会出现两次请求的情况,有的品牌的android手机完全就无法下载,敢问哪位大虾遇到类似的问题,求解决之道. 解决方案 同样的问题,二次请求就不说了,问题是第一次铁定报错.而且还会有几率下载不成功,恼火啊 .....

android中集中html5,怎样实现文件下载功能,我现在有一个超链接

问题描述 android中集中html5,怎样实现文件下载功能,我现在有一个超链接 <a href="http://xxxxxxx/group1/M00/00/08/Ci09DVSb9n6AH76IAAX4AIw6xuk01.docx?attname=基于ANT的增量代码检查.docx&attachid=942'" download="基于ANT的增量代码检查.docx" class="graybtn">下载</a>

HTTP响应的头文件影响文件下载

网站不仅仅只包含网页,有时你需要提供用户能下载的文件.将你的文件放到服务器上并在网页中附上链接只是第一步,你还需意识到HTTP响应的头文件影响文件下载. 提示一:强制下载并控制文件名 在HTML中提供一个下载链接很简单: <a href="http://download.httpwatch.com/httpwatch.exe">Download<a> 对于浏览器不知道如何呈现的二进制文件,如安装程序和ZIP文件,这工作的很好.这会出现一个对话框,允许用户将文件存

asp.net实现文件下载的代码

复制代码 代码如下: public partial class FileDownLoad : System.Web.UI.Page { //提供下载的文件,不编码的话文件名会乱码 private string fileName = HttpContext.Current.Server.UrlEncode("规范.rar"); private string filePath = HttpContext.Current.Server.MapPath("规范.rar");

php用header()实现文件下载,下载的文件提示被破坏不能打开的解决办法

本站以前分享过一个文件下载的函数,具体文章连接地址如下: PHP文件下载函数(代码) 最近一客户反映他们网站上所有的图片下载不了了,下载下来的图片都提示文件被破坏,直接导致打不开,作者测试了下发现确实有这个问题,仔细看了下源代码,发现问题的根源在fread这个函数,fread函数的第二个参数是设置读取最大的字节数,经试验发现fread函数单次最大能够读取的字节数是有限制的,仅为8192个字节,即8KB,对于超过这个大小的文件,如果要完整读取,则需要循环读取直至文件结尾.综合以上做了些改正,以下代

彻底解决中文名文件下载和下载文件内容乱码问题

解决|问题|下载|中文 之前,写过一个Download.jsp文件,可以解决下载文件乱码问题(诸如:DOC,XSL文件等等).后来发现,遇到中文名的文件的时候,文件下载将会报错~~~~今天,通过改写原Download.jsp文件已经彻底解决了这个问题~现在,把一整套的文件上传下载的方法给贴出来~~~以便大家借鉴!~!~!~!~!  作者:古埃及法老---------------------------------------------------------------------------