PHP+下载文件夹
php下载文件我整理了这三种方法,和大家分享一下:
第一种:直接添加文件下载的绝对路径连接
//如:我有一个文件在demo.xx.cn/demo.zip
<button>
<a href = "http://demo.xx.cn/demo.zip">
下载文件
</button>
第二种:跳转到下载文件连接
下面是直接执行php文件
<?php
$filename = 'demo.zip'; //获取文件名称
$dir ="down/"; //相对于网站根目录的下载目录路径
$down_host = $_SERVER['HTTP_HOST'].'/'; //当前域名
//判断如果文件存在,则跳转到下载路径
if(file_exists(__DIR__.'/'.$dir.$filename)){
header('location:http://'.$down_host.$dir.$filename); //拼接下载文件的绝对路径如:http://demo.xx.cn/down/demo.zip
}else{
header('HTTP/1.1 404 Not Found'); //这个文件不存在
}
第三种:head() 和 fread()函数把文件直接输出到浏览器
下面是做成一个php执行文件,在浏览器中直接运行这个php文件即可。
<?php
$file_name = "demo";
$file_name = "demo.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 ();
}
详细配置信息可以参考我写的这篇文章:http://blog.ncmem.com/wordpress/2019/08/28/php%e6%96%87%e4%bb%b6%e6%89%b9%e9%87%8f%e4%b8%8b%e8%bd%bd/
PHP+下载文件夹的更多相关文章
- C#获取windows 10的下载文件夹路径
Windows没有为“下载”文件夹定义CSIDL,并且通过Environment.SpecialFolder枚举无法使用它. 但是,新的Vista 知名文件夹 API确实使用ID定义它FOLDERID ...
- 从Linux服务器下载文件夹到本地
从Linux服务器下载文件夹到本地 1.使用scp命令 scp /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文 ...
- web开发下载文件夹
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用.此控件PC全平台支持包括mac,linux系统的文件上传,文章末尾将附上控件下载与教程链接 ...
- GitHub 下载文件夹
工具 TortoiseSVN 步骤 1.打开要下载的项目,选中要下载的文件夹,右键 选择 复制链接地址 2.把链接中的 tree/master 改成 trunk ,(trunk是master分支,可以 ...
- linux下怎么样上传下载文件夹
Linux下目录复制:本机->远程服务器 scp -r /home/shaoxiaohu/test1 zhidao@192.168.0.1:/home/test2 test1为源目录,test2 ...
- c#+web下载文件夹
最近公司在做工程项目,实现文件夹下载. 网上找了很久,发现网上的代码都有相似的问题,不过最终还是让我找到了一个符合的项目. 工程: 进行项目文件夹下载功能分析,弄清楚文件夹下载的原理,提供的数据支持. ...
- 使用svn在github上下载文件夹
今天想在github上下载mybatis-generator的eclipse插件,可是如何在github上下载一个文件夹而不用把这个项目clone呢,搜了一下,发现可以直接用svn来下载 只需将将路径 ...
- web下载文件夹
1.文件下载有两种方式:一种是超链接,一种是Servlet提供下载. 2.超链接下载时:当文件可以在网页直接打开时,会直接打开文件,而不是下载,当文件打开不了时,会提供下载窗口. 3.超链接下载原理 ...
- web+下载文件夹
文件下载的实质就是文件拷贝,将文件从服务器端拷贝到浏览器端,所以文件下载需要IO技术将服务器端的文件读取到,然后写到response缓冲区中,然后再下载到个人客户端. "> <m ...
随机推荐
- sqlserver 转化函数
--查询系统当前时间select GETDATE() as date;------------------------- 0-14 ------------------select CONVERT(V ...
- 用D3js的区域生成器实现简单波浪图
最近做控件遇到含有波浪图的图表,一开始用Echarts虽然很快完成了,但Echarts的波浪图与其他图表的响应式不同步,于是学习了D3js,D3js写起来确实复杂一些,但能够实现的效果也更丰富,做的时 ...
- bootstrap table分页limit计算pageIndex和pageSize
由于bootstrap table的js无法直接获取pageSize和pageIndex的值,只能通过limit进行计算.
- 配置java环境遇到的问题及解决方案
第一个问题: 安装SDK过程中有过报错,就要注意文件是否齐全,我看了下sdk文件夹下的platforms里面是空的.打开sdk里面的SDK Manager.exe,勾选一个安卓版本进行下载即可. 第二 ...
- MongoDB 无法启动
提示 mongodb Mongod complains that there is no /data/db folder!! 解决方法:http://stackoverflow.com/questio ...
- vue简单todolist
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- centos 安装 kibana
因为我本机安装的 elasticsearch 是 6.2.4 版本,所以kibana也要安装对应的 6.2.4 版本 wget https://artifacts.elastic.co/downloa ...
- 【公有云】在阿里云中申请免费ssl证书
准备 拥有阿里云账号 拥有域名,最好是在同个账号下,方便操作. 申请证书 第一步:进入申请 第二步:选择证书类型 第三步:支付,就是走个流程,不用给钱 第四步:填写证书信息 第五步:验证域名 第六步: ...
- Windows——系统盘重置密码
一.制作好系统启动U盘 软碟通自己制作即可 二.这进入到安装前界面按Shift+F10调出命令提示符 三.输入regedit后按回车进入注册表编辑器 四. 左键单击选中HKEY_LOCAL_MACHI ...
- (2) openstack--keystone
yun1 OpenStack packages yum install python-openstackclient -y yum install openstack-selinux SQL data ...