我爱学习网首页 | 设为首页 | 收藏本站 | 网站地图 您好,欢迎光临我爱学习网
我爱学习网

当前位置:首页 > 编程开发 > php > php入门教程 >

php在线压缩并下载压缩文件的方法

时间:2014-05-23 20:17 来源:我爱学习网 | 作者:我爱学习网 | 本文已影响
php将文件添加到压缩包打包,并弹出文件另存为下载。

<?php
//引用输出下载类
require_once(dirname(__FILE__).'/class.download.php');
$zip=new ZipArchive();//首先实例化这个类
$zipname=uniqid('zip_').'.zip';
if($zip->open($zipname,ZipArchive::OVERWRITE) === TRUE) {//然后查看是否存在zip这个压缩包
	$zip->addFile("a.txt");//将文件添加到zip压缩包中
	$zip->addFile("b.txt");
	$zip->close(); //关闭
	$dw=new download($zipname); //下载文件
	$dw->getfiles();
}
?>

文件class.download.php代码如下:

<?php
/*
*下载类,zip压缩文件下载
*/
class download{
	protected $_filename;
	protected $_filepath;
	protected $_filesize;//文件大小
	public function __construct($filename){
		$this->_filename=$filename;
		$this->_filepath=dirname(__FILE__).'/'.$filename;
	}
	public function __destruct(){
		if (file_exists($this->_filepath)){
			unlink($this->_filepath);
		}
	}
	//获取文件名
	public function getfilename(){
		return $this->_filename;
	}
	//获取文件路径(包含文件名)
	public function getfilepath(){
		return $this->_filepath;
	}
	//获取文件大小
	public function getfilesize(){
		return $this->_filesize=number_format(filesize($this->_filepath)/(1024*1024),2);//去小

数点后两位
	}
	//下载文件的功能
	public function getfiles(){
		//检查文件是否存在
		if(file_exists($this->_filepath)){
			//打开文件
			$file = fopen($this->_filepath,"r");
			//返回的文件类型
			Header("Content-type: application/octet-stream");
			//按照字节大小返回
			Header("Accept-Ranges: bytes");
			//返回文件的大小
			Header("Accept-Length: ".filesize($this->_filepath));
			//这里对客户端的弹出对话框,对应的文件名
			Header("Content-Disposition: attachment; filename=".$this->_filename);
			//修改之前,一次性将数据传输给客户端
			echo fread($file, filesize($this->_filepath));
			//修改之后,一次只传输1024个字节的数据给客户端
			//向客户端回送数据
			$buffer=1024;//
			//判断文件是否读完
			while(!feof($file)){
				//将文件读入内存
				$file_data=fread($file,$buffer);
				//每次向客户端回送1024个字节的数据
				echo $file_data;
			}
			fclose($file);
		}else {
			echo "<script>alert('对不起,您要下载的文件不存在');</script>";
		}
	}
}
?>

(责任编辑:我爱学习网)


分享到: 更多