热门标签 | 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中文网,转载请注明出处,感谢您的尊重!



推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • 本文详细介绍如何使用arm-eabi-gdb调试Android平台上的C/C++程序。通过具体步骤和实用技巧,帮助开发者更高效地进行调试工作。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
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社区 版权所有