学习网址:www.only-softs.com

1、直接添加文件链接

<button><a href = "http://localhost/文件.zip">下载文件</a>
</button>

点击该按钮下载:

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

传递参数:

<button><a href = "http://localhost?f='文件'">下载文件</a>
</button>

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

<?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()函数把文件直接输出到浏览器(此方法2019.3之后出现失效)

<?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 三种文件下载至浏览器的方法相关推荐

  1. SQL下三种执行CMD命令的方法

    SQL下三种执行CMD命令的方法: 先删除7.18号日志: (1)exec master.dbo.xp_cmdshell 'del C:/winnt/system32/logfiles/W3SVC5/ ...

  2. 三种录制接口脚本的方法

    三种录制接口脚本的方法 在做接口测试没有接口文档的情况下,就可以使用录制脚本的方法来录制接口测试的脚本.jmeter本身就支持录制脚本,但是还有两种另外的工具也可以录制脚本. 因为我懒得自己做截图,所 ...

  3. html根据坐标画圆,Canvas三种动态画圆实现方法说明(小结)

    前言 canvas是HTML5出来的绘图API容器,对于图形的处理非常强大,下面使用canvas配合JavaScript来做一下动态画圆效果.可以用它来做圆形进度条来使用. 这里我个人总结了3种实现方 ...

  4. Linux操作系统下三种配置环境变量的方法(linux下几种profile执行顺序)

    http://www.linuxeden.com/html/sysadmin/20080424/56879.html 现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量, ...

  5. python list遍历 间隔_Python 列表(List) 的三种遍历(序号和值)方法

    #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__': list = ['html', 'js', 'css' ...

  6. [zz]Linux操作系统下三种配置环境变量的方法

    个人的总结: 设置了/etc/profile 和 ~/.bashrc 之后,使用了source 命令,是可以echo添加的变量,但是用getenv读不出来,然后使用env命令也显示不出来,是因为没有e ...

  7. php冒泡 插入选择 排序,说说PHP数组的三种排序(冒泡/选择/插入)方法

    说说PHP数组的三种排序(冒泡/选择/插入)方法 PHP #数组 #排序 #冒泡 #选择 #插入2012-05-30 10:17 一.冒泡排序法 说明:找到最大的数,排列到最后面,然后继续找 例: $ ...

  8. Linux操作系统下三种配置环境变量的方法

    现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法. 1.修改/etc/profile文件 如果你的计算机仅仅作 ...

  9. iis搭建php出现301,IIS服务器PHP下三种实现301重定向的方法

    IIS服务器PHP下三种实现301重定向的方法 来源:重庆SEO作者:杨南强 2012-05-07 08:47 我来投稿参与评论 301重定向:301代表永久性转移,301重定向是网页更改地址后对搜索 ...

最新文章

  1. POSIX多线程编程-条件变量pthread_cond_t
  2. 一个声明指定了多个类型的问题
  3. 远程过程调用失败0x800706be_WordPress5.0 远程代码执行分析
  4. boost::python::detail::is_borrowed_ptr相关的测试程序
  5. oracle job 事务提交,Oracle dbms_job.submit用法
  6. Docker+Redis镜像的原理以及部署安装(超详解附截图)
  7. Office Word 2007下管理参考文献(比2003版的交叉引用神马的轻松多拉)(转)
  8. 【转】HTML - embed 与 object 之争
  9. javascript对象包含哪些要素_重学JavaScript 对象
  10. Spring @Value取值为null或@Autowired注入失败
  11. 如何从零构建对内网穿透的理解
  12. Pessimistic Locking ——悲观锁
  13. 假如你是QQ的产品经理
  14. excel表格经纬度同表格分成经度纬度两个表格
  15. 进军NFT?方文山×周杰伦联名款公仔今日发售,将引入NFT防伪认证!
  16. 数据仓库之【用户行为数仓】10:【dws层:数据汇总层】【appc层:数据应用层】需求3:用户7日流失push提醒
  17. 免费可商用图片素材、高清无版权图片、免费可个人和商业用途图片
  18. s5pv210 nandflash学习(一)
  19. QIUXP-预训练语言模型:BertMarker:MarkBERT: Marking Word Boundaries Improves Chinese BERT
  20. route OS(MikroTik)2.9.27初探

热门文章

  1. 小米手环3nfc和4nfc哪个好_荣耀手环4发力对抗小米手环3,如果彩屏和NFC只能二选一!...
  2. html5 文字浮动在图片旁,【CSS小白】 问关于图片浮动之后文字环绕图片的问题...
  3. unlegal android,yy99/cordova-baidu-location
  4. 便利店进货门道,除了上海猫友股份的懒猫社长,别人可不会告诉你
  5. 关于Unity unsafe的解决
  6. matlab遗传算法求解冷链路径优化问题
  7. 名著赏读 | 研究生教育的历史,读《探究的场所》
  8. 如何用idea进行安卓开发
  9. Webpack打包流程系列一:打包JS(JavaScript)文件
  10. 计算机快应用,​快应用加载器PC助手