php文件下载类代码,php文件下载处理类

发布时间:2019-12-14编辑:脚本学堂
分享一个php文件类,用于文件下载处理操作,可以判断文件是否存在,并打开文件,输出文件内容流,实现文件下载功能。

php文件下载类代码
 

复制代码 代码示例:

<?php
/*
* 功 能: 文件下载
*/
/**
* 使用方法:$download = new Download();
* //设置参数
* $download->set_file_dir("c:/");
* $download->set_file_name("boot.ini");
* $download->set_read_bytes(1024);
* //文件下载处理操作
* $download->deal_with();
* //判断文件是否存在
* if($download->is_file_exist()){
*echo "file_exist";
*}else{
*echo "file_not_exist";
*}
*/
class Download {
private $file = null;//文件句柄
private $file_dir = "";//文件所在的目录
private $file_name = "";//文件名称
private $file_exist = false;//表示文件是否存在, 缺省为不存在
private $read_bytes = 0;//文件读取字节数
private $mode = "r";//文件的访问类型

public function __construct(){
}

public function __destruct(){
if(null != $this->file){
fclose($this->file);
}
}

/**
* 文件下载处理的操作
*/ www.jb200.com
public function deal_with(){
//文件全路径
$file_path = $this->file_dir . $this->file_name;

//检查文件是否存在
if (file_exists($file_path)) {
$this->file_exist = true;

// 打开文件
$this->file = fopen($file_path, $this->mode);

// 输入文件标签
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: " . filesize($file_path));
Header("Content-Disposition: attachment; filename=" . $this->file_name);

// 输出文件内容
while(!feof($this->file))
{
$out = fread($this->file, $this->read_bytes);
if(!get_magic_quotes_gpc())
{
echo $out;
}
else
{
echo stripslashes($out);
}
}
//echo fread($file, filesize($file_dir . $file_name));
}
}

/**
* 返回值为 true 或 false, 通过其值判断文件是否存在
*/
public function is_file_exist(){
return $this->file_exist;
}

/**
* 参数类型为字符串
*/
public function set_file_dir($file_dir=""){
$this->file_dir = $file_dir;
}

/**
* 参数类型为字符串
*/
public function set_file_name($file_name=""){
$this->file_name = $file_name;
}

/**
* 参数类型为整型
*/
public function set_read_bytes($read_bytes=1024){
$this->read_bytes = $read_bytes;
}
}
?>