本文目录一览:
- 1、php 显示指定目录下所有文件名,点击实现下载功能
- 2、PHP典型模块与项目实战大全:PHP文件下载的原理及实现
- 3、php设置下载文件名
- 4、如何实现php点击时下载txt文件功能?
- 5、如何实现php点击时下载txt文件功能? 详细�0�3
php 显示指定目录下所有文件名,点击实现下载功能
这得看该文件夹里的文件是什么后缀了。如果你网站是支持php跟asp的,并且该文件夹里的文件也是PHP跟ASP。那是不可能会让用户下载的!应为浏览器会解释这些个程序文件。如果是RAR的,点击就会下载的。当然程序文件你也不希望能让别人下载下去。
PHP典型模块与项目实战大全:PHP文件下载的原理及实现
PHP文件下载的原理及实现
通常文件下载过程是十分简单的 建立一个链接指向到目标文件就可以了 例如下面的链接
a href=// xxx /xxx rar点击下载文件/a
但是 实际情况可能会稍复杂 比如需要用户填写完整注册信息后才可以下载该文件 这时最先想到的是使用Redirect的方式 下面介绍两种方式
( )用Redirect方式 先检查表格是否已经填写完毕和完整 然后将链接指到该文件 这样用户就可以下载 请看下面的示例代码
?php
/*文件功能 检查变量form是否完整*/
if($form){
//重新定向浏览器指向
Header( Location: // // xxx /xxx rar )
exit;
}
?
( )根据下载文件的序号来查找 链接的形式如下
a href= // xxx /download php?id= 点击下载文件/a
上面的链接使用ID方式接收要下载文件的编号 然后再用Redirect的方式连接到真实的文件链接
以上这两种方法虽然实现了文件的下载功能 但是缺点是直接暴露了文件所属的路径 而且没有防盗链的功能 所以上面的方式是简单直接但存在安全隐患的文件下载方式 在PHP中 通常是利用header()函数和fread()函数来实现安全的文件下载 -php点击文件名下载文件
例如 需要下载的是一个文件名为xxx rar的文件 首先创建文件是download php的PHP文件 通过前面的例子很容易通过文件的ID号从数据库中得到待下载文件的真实位置 在获得文件的真实存储位置后 可以通过header()函数的location参数直接重定向到这个文件 但是这样仍然是不安全的 因为某些下载软件还是可以通过重定向分析获得该文件的位置信息 因此需要用另外一种方法 就是PHP的文件处理API函数 它是通过fread()函数把文件直接输出到浏览器提示用户下载 这样所有的处理都是在服务器端完成的 因此用户就无法获得文件具体存储位置信息的 示例代码如下 -php点击文件名下载文件
?
$file_name = xxx rar ; //下载文件名
$file_dir = /up/ ; //下载文件存放目录
//检查文件是否存在
if (! file_exists ( $file_dir $file_name )) {
echo 文件找不到 ;
exit ()
} else {
//打开文件
$file = fopen ( $file_dir $file_name r )
//输入文件标签
Header ( Content type: application/octet stream )
Header ( Accept Ranges: bytes )
Header ( Accept Length: filesize ( $file_dir $file_name ) )
Header ( Content Disposition: attachment; filename= $file_name )
//输出文件内容
//读取文件内容并直接输出到浏览器
echo fread ( $file filesize ( $file_dir $file_name ) )
fclose ( $file )
exit ()
}
?
【代码解读】
上述代码中 程序发送Header信息是用来告诉Apache和浏览器下载文件的相关信息的 content type的含义代表文件MIME类型是文件流格式 如果在Apache配置里面把文件的MIME类型设为application/octet stream(如add application/octet stream xxx rar) 那么浏览器(客户端)就会知道 这是一个文件流格式的文件并提示用户下载 Accept Ranges是一个响应头标 它允许服务器指明将在给定的偏移和长度处 为资源组成部分的接受请求 该头标的值被理解为请求范围的度量单位 Content Length是指定包含于请求或响应中数据的字节长度 例如 Content Length: Content Disposition:attachment是用来告诉浏览器 文件是可以当做附件被下载 下载后的文件名称为$file_name该变量的值 -php点击文件名下载文件
运行download php文件 效果如图 所示 从图中可以看到文件按照预想的方式被提示下载 单击 保存 按钮将文件保存在本地
图 PHP文件安全下载
返回目录 PHP典型模块与项目实战大全
编辑推荐
Java Web开发详解
PHP Web开发学习实录
lishixinzhi/Article/program/PHP/201311/21519
php设置下载文件名
写个新的控制器来让用户下载,而不是直接用过文件路径下载。 比如:
/index.php?controller=down_filefile=1.zip
然后在Controller里控制输出名就可以实现
$file = './路径/1.zip';
filename = '2.zip';
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header("Content-type:text/html;charset=utf-8");
header('Content-Disposition: attachment; filename='. $filename);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
readfile($file);
exit;
如何实现php点击时下载txt文件功能?
由于现在的浏览器已经可以识别格式为txt的文档格式,所以如果只是给txt文档做一个文字链接的话,可能只是打开一个新窗口显示txt文件的内容,并不能实现点击下载的目的。We have to do something else. 当然这个问题的解决办法也可以是你将你的txt文件改名为浏览器不认识的文件,比如rar,这样的话点击,浏览器不认识就只好让用户下载了。 下面这个文件就是通过设置header设置文档的格式来实现点击下载的目的,将上个页面传递过来的文件点击可以下载。 ?php$filename="/somepath/". $_GET['file']." .txt";//要下载的文件名header("Content-Type:application/force-download");header("Content-Disposition:attachment;filename=". 接着第二个header函数设置了要下载的文件,注意这里filename是不包含路径的文件名,所以用basename过滤掉路径名。这个 filename的值将来就是点击下载后弹出对话框里面的文件名,如果带路径的话,弹出对话框的文件名就是未知的,这个要注意,我就犯了这个错误,后来凭 经验自己改了,居然对了。 最后就是readfile,将文件流输出到浏览器,这样就实现了txt文件的下载,其他类型的类似。-php点击文件名下载文件
如何实现php点击时下载txt文件功能? 详细�0�3
php 点击下载txt 文件
由于现在的浏览器已经可以识别格式为txt 的文档格式,所以如果只是给txt 文档做一
个文字链接的话,可能只是打开一个新窗口显示txt 文件的内容,并不能实现点击下载的目
的。We have to do something else.
当然这个问题的解决办法也可以是你将你的txt 文件改名为浏览器不认识的文件,比如
rar,这样的话点击,浏览器不认识就只好让用户下载了。
下面这个文件就是通过设置header 设置文档的格式来实现点击下载的目的,将上个页面传
递过来的文件点击可以下载。
接着第二个header函数设置了要下载的文件,注意这里filename是不包含路径的文件名,
所以用basename 过滤掉路径名。这个 filename 的值将来就是点击下载后弹出对话框里面的
文件名,如果带路径的话,弹出对话框的文件名就是未知的,这个要注意,我就犯了这个错
误,后来凭 经验自己改了,居然对了。
最后就是 readfile,将文件流输出到浏览器,这样就实现了 txt 文件的下载,其他类型的类似。