PHP实现文件上传下载之文件下...LOGIN

PHP实现文件上传下载之文件下载

文件下载

对于浏览器来说不识别的,可以直接下载,但对于能识别的,则需要进行一些操作

代码如下:

<?php
//获取传递过来的路径信息
$filename=$_GET['filename'];
//判断是否有值,没有则不执行下面的php语句
if($filename){
	header("Content-Disposition:attachment;filename=download_$filename");
	//Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。
	//格式:content-disposition = "Content-Disposition" ":" disposition-type *( ";" disposition-parm 
	//Content-Disposition为属性名
    //disposition-type是以什么方式下载,如attachment为以附件方式下载
     //disposition-parm为默认保存时的文件名 
	readfile($filename);
	exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> 
 <meta name="format-detection" content="telephone=no" /> 
<title>文件下载</title>
<meta charset="utf-8" />
</head>
<body>
<a href="1.rar">下载1.rar</a>
<br />
<a href="1.jpg">下载1.jpg</a>
<br />
<a href="download.php?filename=1.jpg">通过程序下载1.jpg</a>
</body>
</html>

注:测试的时候,文件的同级目录下,必须存在1.rar、1.jpg,也可以通过修改路径,改变到自己的文件想要的文件夹下面


代码解释

有三个下载连接

  • 一个对应图片(浏览器可以识别)

  • 一个对应压缩文件(浏览器不可以识别)

  • 最后一个还是图片,我们通过传递路径给当前页面,在页面顶端的php代码中实现当成一个附件打开或者保存

  • php代码部分在程序中已经注释的很详细,大家可以参考

<?php //获取传递过来的路径信息 $filename=$_GET['filename']; //判断是否有值,没有则不执行下面的php语句 if($filename){ header("Content-Disposition:attachment;filename=download_$filename"); //Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。 //格式:content-disposition = "Content-Disposition" ":" disposition-type *( ";" disposition-parm  //Content-Disposition为属性名 //disposition-type是以什么方式下载,如attachment为以附件方式下载 //disposition-parm为默认保存时的文件名 readfile($filename); exit; } ?> <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta name="format-detection" content="telephone=no" /> <title>文件下载</title> <meta charset="utf-8" /> </head> <body> <a href="1.rar">下载1.rar</a> <br /> <a href="1.jpg">下载1.jpg</a> <br /> <a href="download.php?filename=1.jpg">通过程序下载1.jpg</a> </body> </html>
提交重置代码
章节课件