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

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

1、直接添加文件链接

下载文件

点击该按钮下载:

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

传递参数:

下载文件

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

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

}

结果:

文件存在

文件不存在

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

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

php该怎么下载文件,php怎么实现下载文件?相关推荐

  1. git add 文件夹_Git的下载安装以及基本操作

    二,配置git:用户名和邮箱 在桌面右键-[Git Bash Here] 输入命令: git config --global user.name "lijiang" git con ...

  2. Angular 文件上传与下载

    Angular文件上传与下载 文件上传 方式1 使用NG ZORRO中的组件. 文件下载 方式1 直接下载 方式2 通过HTTP请求后端数据的方式进行下载 文件上传 方式1 使用NG ZORRO中的组 ...

  3. 批量下载文件,循环中文件流没有关闭导致每次下载会累加之前的下载文件

    /*** 压缩** @param files 多文件* @param zipFilePath 目标压缩文件路径* @throws IOException*/ public static void zi ...

  4. aaynctask控制多个下载进度_AsyncTask用法解析-下载文件动态更新进度条

    1. 泛型 AysncTask Params:启动任务时传入的参数,通过调用asyncTask.execute(param)方法传入. Progress:后台任务执行的进度,若不用显示进度条,则不需要 ...

  5. python urlretrieve登录下载_使用python urlretrieve下载文件

    urlretrieve()方法直接将远程数据下载到本地.urlretrieve()是python urllib下的一个函数,python3已经将urlretrieve()移到urllib.reques ...

  6. [转]文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1

    转自:http://blog.csdn.net/soarheaven/archive/2008/12/08/3474152.aspx 最近项目需要对FTP服务器进行操作,现把实现总结如下: 打算分2篇 ...

  7. php强制下载压缩包损坏,php 通过header下载中文文件名 压缩包损坏或文件不存在的问题...

    开发中大家都是使用的utf8编码,昨天遇到一个奇坑,本是一件很小的问题,解决也浪费了个吧小时.废话不多说,植入正题: 文件下载方式:通过header二进制流文件下载 需求: 文件上传保留文件名不变 数 ...

  8. SpringBoot下文件上传与下载的实现

    原文:http://blog.csdn.net/colton_null/article/details/76696674 SpringBoot后台如何实现文件上传下载? 最近做的一个项目涉及到文件上传 ...

  9. Python实现阿里云aliyun服务器里的文件上传与下载

    Python实现阿里云服务器里的文件上传与下载 Python实现阿里云服务器里的文件上传与下载 背景: 正文: 预备环境: 构想: 实现: 注意: 结尾 018.4.15 背景: 老实说,因为现实的各 ...

  10. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

最新文章

  1. Py之Kivy:Python库之Kivy的简介、安装、使用方法之详细攻略
  2. 快速成长为数据挖掘高手的秘诀
  3. Firefox无法启动,提示Profile is yet in use by another Firefox
  4. SVN历史版本比较中文乱码
  5. 正则表达式学习笔记003--问号和加号的认识与应用
  6. Maven传递依赖冲突解决(版本冲突)
  7. [CF600E]Dsu on tree
  8. 表格(table)不被撑开的解决办法
  9. 计算机网络技术专业职业能力分析的结论与成效
  10. linux安装ipk游戏,添加软件包 IPK
  11. 【Python 项目】02 微信定时发送消息
  12. 微信小程序JS 字符串string与arraybuffer的相互转换
  13. 【0034】 PostgreSQL报错信息:The server must be started by the user that owns the data directory.
  14. matlab中的sig函数,MATLAB——sigmoid传递函数
  15. Linux下提示命令找不到:bash:command not found
  16. python django小型超市管理系统
  17. 融云IM报错connect should be called in main process
  18. 【职场必备知识】一文搞懂五险一金(打工人必备)
  19. 201621123063叶斓浈 第一周实验报告
  20. 锐捷(四)mstp+vrrp+链路聚合

热门文章

  1. 初中级工程师是否应急于学习html5?
  2. 用Python解决简单的水果分类问题(二)
  3. 孙鑫VC学习笔记:第十三讲 (五) 保存可串行化的类对象 如何获取文档与视类指针
  4. unity 电梯_unity应用实例——电梯模拟系统
  5. kettle配置集群_KETTLE集群搭建
  6. 拓端tecdat|R语言股票收益分布一致性检验KS检验Kolmogorov-Smirnov、置换检验Permutation Test可视化
  7. 拓端tecdat|python对NOAA天气数据格式转换
  8. 拓端tecdat|R语言进行相关矩阵分析及其网络可视化
  9. 计算机技术在音乐专业中的应用与探索,计算机技术在音乐教学中的应用与研究...
  10. 指定LINUX内存大小,linux下内存大小、起始地址的解析与修改