热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php该怎么下载文件,php怎么实现下载文件?

php怎么实现下载文件?下面本篇文章给大家介绍一下php下载文件的3种方式。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助

php怎么实现下载文件?下面本篇文章给大家介绍一下php 下载文件的3种方式。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

52cbf4745fbb0ccb9c3040a82d16b697.png

php 下载文件的3种实现方式

1、直接添加文件链接

下载文件

点击该按钮下载:

81d575d0f4956d100186f314c534ae1c.png

2、传递参数查找并跳转到下载链接

传递参数:

下载文件

查找文件并挑转到下载链接:

$down = $_GET['f']; //获取文件参数

$filename = $down.'.zip'; //获取文件名称

$dir ="down/"; //相对于网站根目录的下载目录路径

$down_host = $_SERVER['HTTP_HOST'].'/'; //当前域名

//判断如果文件存在,则跳转到下载路径

if(file_exists(__DIR__.'/'.$dir.$filename)){

header('location:http://'.$down_host.$dir.$filename);

}else{

header('HTTP/1.1 404 Not Found');

}

结果:

文件存在

63bdf9845044641e7373e76332dc21b0.png

文件不存在

2dcd012a3bdc56991891b394ce6add49.png

3、head() 和 fread()函数把文件直接输出到浏览器

$file_name = "down";

$file_name = "down.zip"; //下载文件名

$file_dir = "./down/"; //下载文件存放目录

//检查文件是否存在

if (! file_exists ( $file_dir . $file_name )) {

header('HTTP/1.1 404 NOT FOUND');

} else {

//以只读和二进制模式打开文件

$file = fopen ( $file_dir . $file_name, "rb" );

//告诉浏览器这是一个文件流格式的文件

Header ( "Content-type: application/octet-stream" );

//请求范围的度量单位

Header ( "Accept-Ranges: bytes" );

//Content-Length是指定包含于请求或响应中数据的字节长度

Header ( "Accept-Length: " . filesize ( $file_dir . $file_name ) );

//用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。

Header ( "Content-Disposition: attachment; filename=" . $file_name );

//读取文件内容并直接输出到浏览器

echo fread ( $file, filesize ( $file_dir . $file_name ) );

fclose ( $file );

exit ();

}

?>

结果:和第二个一样总结:第一个和第二个操作比较简单,但是容易暴露文件的真实地址,安全性不高,第三种能够较好的把文件的真实地址隐藏起来

更多相关知识,请访问 PHP中文网!!

相关标签:php

本文原创发布php中文网,转载请注明出处,感谢您的尊重!



推荐阅读
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 解决网站乱码问题的综合指南
    本文总结了导致网站乱码的常见原因,并提供了详细的解决方案,包括文件编码、HTML元标签设置、服务器响应头配置、数据库字符集调整以及PHP与MySQL交互时的编码处理。 ... [详细]
  • 深入解析Nginx中的Location指令及其属性
    本文将详细探讨Nginx配置文件中关键的location指令,包括其三种匹配方式(精准匹配、普通匹配和正则匹配),以及如何在实际应用中灵活运用这些匹配规则。此外,还将介绍location下的重要子元素如root、alias和proxy_pass,并解释相关参数的使用方法。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
author-avatar
junlingchen12
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有