股票交易网站开发,在广州注册公司需要什么资料,玉林市网站开发公司,建设网站公司塞尼铁克思路步骤* 定义参数* 魔术方法* 执行下载* 获取设置属性函数* 获取设置文件mime 类型* 获取设置下载文件名* 设置header* 下载函数实现代码class DownFile{// 定义参数public $data; // 下载的数据或文件名public $is_confalse; // 是否是下载内容public $down_file_name; // 下…思路步骤* 定义参数* 魔术方法* 执行下载* 获取设置属性函数* 获取设置文件mime 类型* 获取设置下载文件名* 设置header* 下载函数实现代码class DownFile{// 定义参数public $data; // 下载的数据或文件名public $is_confalse; // 是否是下载内容public $down_file_name; // 下载后的文件名public $mime_type; //下载时设置的文件类型public $file_delfalse; // 下载完成后是否删除服务器文件private $file_extoctet-stream; // 下载文件时设置的默认文件后缀(获取不到文件类型时设置)private $default_mime_typeapplication/; // 下载时设置的默认文件类型// 魔术方法-- 对象参数赋值public function __get($name){return $this-name;}public function __set($name,$value){if(!isset($this-name)){exit(no is $name attr);}$this-name $value;}public function __isset($name){return isset($this-name);}// 执行下载public function output($datanull,$down_file_namenull,$is_connull){// 初始化赋值基本数据if(!empty($data))$this-data$data;if(isset($is_con))$this-is_con$is_con;// 如果下载的不是数据 并且不是文件 抛出异常if (!$this-is_con !is_file($this-data)) {throw new Exception(file not exists: . $this-data);}ob_end_clean();// 下载文件名$this-down_file_name($down_file_name);if($this-is_con){$this-mime_type$this-default_mime_type.$this-file_ext;$file_sizestrlen($this-data);$this-header($file_size);// 如果数据量过多建议 while 方式输出/*$read_size0;$buffer1024; //设置一次读取的字节数每读取一次就输出数据(即返回给浏览器)while ($read_size$file_size){echo substr($this-data,$read_size,$buffer);$read_size$buffer;}*/// 如果数据量小使用以下方式输出echo $this-data;}else if(is_file($this-data)){$this-get_mime_type();$this-down_file(filesize($this-data));}}// 获取设置文件mime 类型private function get_mime_type(){if(empty($this-mime_type)){$finfo finfo_open(FILEINFO_MIME_TYPE);$this-mime_typefinfo_file($finfo, $this-data);if(empty($this-mime_type))$this-mime_type$this-default_mime_type.$this-file_ext;}}// 获取设置下载文件名private function down_file_name($down_file_name){if(!empty($down_file_name))$this-down_file_name$down_file_name;else{if(empty($this-down_file_name))$this-down_file_nametime().$this-file_ext;}}// 设置headerprivate function header($f_size){header(Content-type:.$this-mime_type);header(Accept-Ranges:bytes);header(Accept-Length:.$f_size);header(Content-Disposition:attachment;filename.$this-down_file_name);header(Content-Transfer-Encoding:binary);header(Cache-Control:no-cache,no-store,max-age0,must-revalidate);header(Pragma:no-cache);}// 下载文件函数private function down_file($f_size){$this-header($f_size);if(!$this-file_del){// 如果文件过大建议使用 while 方式读取输出/*$fpfopen($this-data,r);$buffer1024; //设置一次读取的字节数每读取一次就输出数据(即返回给浏览器)while(!feof($fp)){$file_confread($fp,$buffer); // fread 指针自动下移echo $file_con;}fclose($fp);*/// 如果数据量小直接输出readfile($this-data);}else{$fpfopen($this-data,r);$buffer1024; //设置一次读取的字节数每读取一次就输出数据(即返回给浏览器)$file_count0; //读取的总字节数//向浏览器返回数据while(!feof($fp) $file_count$file_confread($fp,$buffer);$file_count$buffer;echo $file_con;}fclose($fp);//下载完成后删除压缩包临时文件夹if($file_count $f_size){unlink($this-data);}}}}调用示例$fnew DownFile();//$f-output(1.png,2.png); // 参数调用-- 下载文件//$f-output(测试数据下载直接生成文件,2.txt,true); // 参数调用-- 下载数据直接生成文件// 对象方式调用/*$f-data1.html;$f-down_file_name2.html;//$f-file_deltrue; // 下载完成后删除服务器远程文件$f-output();*/$f-data对象方式调用.PHP_EOL.测试数据下载直接生成文件;$f-down_file_name2.txt;$f-is_contrue;$f-output();标签文件,name,down,mime,file,php,data,下载来源 https://www.cnblogs.com/xuey/p/10353276.html