热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

php实现文件下载-PHP源码

ec(2);author:heaven文件下载functiondownload($file_dir,$file_name)参数说明:file_dir:文件所在目录file_name:文件名{    $file_dirchop($file_dir);去掉路径中多余的空格  &nbs

//author:heaven
//文件下载
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);

//echo file_get_contents($file_path);

$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;

}

页面处理部分

$dir = "../main/trade_log";
// Open a known directory, and proceed to read its contents
if (is_dir($dir))
{
$filename=array();
if ($dh = opendir($dir))
{
while (($file = readdir($dh)) !== false)
{
if ($file!="." && $file!=".." && $file!=".svn")
{

$filename[]=$file;
}
}
closedir($dh);
}
}

if(isset($_GET['logname']))
{

download("../main/trade_log",$_GET['logname']);
exit;

}
$smarty->assign("trade_log_list",$filename);

注意这块

download("../main/trade_log",$_GET['logname']);
exit;

一定要加exit

否则下载的文件display的部分也要输出

推荐阅读
  • Vim 编辑器功能强大,但其默认的配色方案往往不尽如人意,尤其是注释颜色为蓝色时,对眼睛极为不友好。为了提升编程体验,自定义配色方案显得尤为重要。通过合理调整颜色,不仅可以减轻视觉疲劳,还能显著提高编码效率和兴趣。 ... [详细]
  • 在Eclipse中提升开发效率,推荐使用Google V8插件以增强Node.js的调试体验。安装方法有两种:一是通过Eclipse Marketplace搜索并安装;二是通过“Help”菜单中的“Install New Software”,在名称栏输入“googleV8”。此插件能够显著改善调试过程中的性能和响应速度,提高开发者的生产力。 ... [详细]
  • 在Mac操作系统中,.svn文件夹作为隐藏文件,逐个手动删除相当繁琐。为了提高效率,可以通过简单的Linux命令实现批量删除。具体操作为:打开终端,切换至目标项目目录(此步骤至关重要),然后执行相应命令以彻底清除所有.svn文件夹。此外,建议在执行前备份重要数据,以防误删。 ... [详细]
  • Windows环境下详细教程:如何搭建Git服务
    Windows环境下详细教程:如何搭建Git服务 ... [详细]
  • 在文件状态发生变化时,需要在其图标上精确叠加状态标识,以提供直观的视觉反馈。例如,在使用SVN进行版本控制时,同步成功后会在文件图标上显示一个绿色的勾,如下图所示。本文探讨了实现这一功能的技术方法,包括图标叠加的精准控制和多种应用场景,旨在提升用户界面的友好性和功能性。 ... [详细]
  • 如何在微信公众平台集成新浪云服务应用摘要:新浪云服务平台SinaAppEngine(简称SAE)自2009年启动内部研发,并于同年对外开放。本文详细介绍了如何利用SAE的强大功能,在微信公众平台上构建高效、稳定的云服务应用程序,涵盖从环境配置到应用部署的全流程,为开发者提供详尽的技术指导与实践案例。 ... [详细]
  • 版本控制是软件开发中的关键实践,用于管理和跟踪代码变更历史,确保团队协作高效有序。本文详细介绍了SVN(Subversion)服务器与客户端的安装配置步骤,并针对常见问题提供了实用的解决方案,帮助用户顺利搭建和使用SVN系统。 ... [详细]
  • SVN代码冲突解决策略与实用技巧汇总
    对于SVN新手而言,遇到代码冲突无法提交的情况确实令人沮丧。特别是当其他人的修改覆盖了自己的工作时,这种挫败感尤为强烈。代码冲突不仅影响开发效率,还可能导致项目进度延误。理解代码冲突产生的原因及其解决策略至关重要。本文将详细介绍SVN中常见的冲突类型、预防措施及解决技巧,帮助开发者高效应对代码合并中的各种挑战。 ... [详细]
  • Mantis Bug Tracker:高效缺陷管理与跟踪系统
    缺陷管理平台Mantis,也做MantisBT,全称MantisBugTracker。Mantis是一个基于PHP技术的轻量级的开源缺陷跟踪系统,以Web操作的形式提供项目管理及缺 ... [详细]
  • 1.打开终端输入cdDesktopenter之后输入lsenter键2.输入cd文件名(比如IOS)enter键3.输入LSenter4.find.|g ... [详细]
  • svnstat查看当前目录下svn状态svnremovexxxxsvnaddxx ... [详细]
  • 配置svn_Zend Studio 配置SVN并导入SVN项目
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了ZendStudio配置SVN并导入SVN项目相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 转载于:https:blog.51cto.comquieth ... [详细]
  • svn切换账号后无法update_刺激战场国际服疑似锁国区 新玩家无法注册 玩家务必不要切换账号...
    作为绝地求生官方授权的正版手游,《PUBGMobile》受到全世界诸多玩家的青睐,这其中就包括众多国内玩家。自从《和平精英》上线之后,大量 ... [详细]
  • 在 Virtmanager 图形界面中使用桥接网络
    在Virt-manager图形界面中使用桥接网络(bridgednetworking)2012-09-0315:40:23标签:virtm ... [详细]
author-avatar
王建毓桂恩佳士
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有