A nice PHP file download class
Release: 2016-07-25 08:58:46
Original
1315 people have browsed it
-
-
- /**
- ** PHP file download class
- ** Example:
- $download=new download('php,exe,html',false);
- if(!$download->downloadfile($filename))
- {
- echo $ download->geterrormsg();
- }
- * by bbs.it-home.org
- */
- class download{
- var $debug=true;
- var $errormsg='';
- var $Filter=array();
- var $filename='';
- var $mineType='text/plain';
- var $xlq_filetype=array();
function download($fileFilter='',$isdebug=true)
- {
- $this->setFilter($fileFilter);
- $this->setdebug($isdebug);
- $this->setfiletype();
- }
function setFilter($fileFilter)
- {
- if(empty($fileFilter)) return ;
- $this->Filter=explode(',',strtolower($fileFilter));
- }
- function setdebug($debug)
- {
- $this->debug=$debug;
- }
function setfilename($filename)
- {
- $this->filename=$filename;
- }
function downloadfile($filename)
- {
- $this->setfilename($filename);
- if($this->filecheck())
- {
- $fn = array_pop( explode( '/', strtr( $this->filename, '\', '/' ) ) );
- header( "Pragma: public" );
- header( "Expires: 0" ); // set expiration time
- header( "Cache-Component: must-revalidate, post-check=0, pre-check=0" );
- header( "Content-type:".$this->mineType );
- header( "Content-Length: " . filesize( $this->filename ) );
- header( "Content-Disposition: attachment; filename="$fn"" );
- header( 'Content-Transfer-Encoding: binary' );
- readfile( $this->filename );
- return true;
- }else
- {
- return false;
- }
- }
- function geterrormsg()
- {
- return $this->errormsg;
- }
function filecheck()
- {
- $filename=$this->filename;
- if(file_exists($filename))
- {
- $filetype=strtolower(array_pop(explode('.',$filename)));
- if(in_array($filetype,$this->Filter))
- {
- $this->errormsg.=$filename.'不允许下载!';
- if($this->debug) exit($filename.'不允许下载!') ;
- return false;
- }else
- {
- if ( function_exists( "mime_content_type" ) )
- {
- $this->mineType = mime_content_type( $filename );
- }
- if(empty($this-> mineType))
- {
- if( isset($this->xlq_filetype[$filetype]) ) $this->mineType = $this->xlq_filetype[$filetype];
- }
- if(!empty($this ->mineType))
- return true;
- else
- {
- $this->errormsg.='An error occurred while obtaining the '.$filename.' file type, or the predetermined file type does not exist';
- if($ this->debug) exit('Error getting file type');
- return false;
- }
- }
- }else
- {
- $this->errormsg.=$filename.'Does not exist!';
- if( $this->debug) exit($filename.'Does not exist!') ;
- return false;
- }
- }
function setfiletype()
- {
- $this->xlq_filetype['chm']='application/octet-stream';
- $this->xlq_filetype['ppt']='application/vnd.ms-powerpoint';
- $this->xlq_filetype['xls']='application/vnd.ms-excel';
- $this->xlq_filetype['doc']='application/msword';
- $this->xlq_filetype['exe']='application/octet-stream';
- $this->xlq_filetype['rar']='application/octet-stream';
- $this->xlq_filetype['js']="javascript/js";
- $this->xlq_filetype['css']="text/css";
- $this->xlq_filetype['hqx']="application/mac-binhex40";
- $this->xlq_filetype['bin']="application/octet-stream";
- $this->xlq_filetype['oda']="application/oda";
- $this->xlq_filetype['pdf']="application/pdf";
- $this->xlq_filetype['ai']="application/postsrcipt";
- $this->xlq_filetype['eps']="application/postsrcipt";
- $this->xlq_filetype['es']="application/postsrcipt";
- $this->xlq_filetype['rtf']="application/rtf";
- $this->xlq_filetype['mif']="application/x-mif";
- $this->xlq_filetype['csh']="application/x-csh";
- $this->xlq_filetype['dvi']="application/x-dvi";
- $this->xlq_filetype['hdf']="application/x-hdf";
- $this->xlq_filetype['nc']="application/x-netcdf";
- $this->xlq_filetype['cdf']="application/x-netcdf";
- $this->xlq_filetype['latex']="application/x-latex";
- $this->xlq_filetype['ts']="application/x-troll-ts";
- $this->xlq_filetype['src']="application/x-wais-source";
- $this->xlq_filetype['zip']="application/zip";
- $this->xlq_filetype['bcpio']="application/x-bcpio";
- $this->xlq_filetype['cpio']="application/x-cpio";
- $this->xlq_filetype['gtar']="application/x-gtar";
- $this->xlq_filetype['shar']="application/x-shar";
- $this->xlq_filetype['sv4cpio']="application/x-sv4cpio";
- $this->xlq_filetype['sv4crc']="application/x-sv4crc";
- $this->xlq_filetype['tar']="application/x-tar";
- $this->xlq_filetype['ustar']="application/x-ustar";
- $this->xlq_filetype['man']="application/x-troff-man";
- $this->xlq_filetype['sh']="application/x-sh";
- $this->xlq_filetype['tcl']="application/x-tcl";
- $this->xlq_filetype['tex']="application/x-tex";
- $this->xlq_filetype['texi']="application/x-texinfo";
- $this->xlq_filetype['texinfo']="application/x-texinfo";
- $this->xlq_filetype['t']="application/x-troff";
- $this->xlq_filetype['tr']="application/x-troff";
- $this->xlq_filetype['roff']="application/x-troff";
- $this->xlq_filetype['shar']="application/x-shar";
- $this->xlq_filetype['me']="application/x-troll-me";
- $this->xlq_filetype['ts']="application/x-troll-ts";
- $this->xlq_filetype['gif']="image/gif";
- $this->xlq_filetype['jpeg']="image/pjpeg";
- $this->xlq_filetype['jpg']="image/pjpeg";
- $this->xlq_filetype['jpe']="image/pjpeg";
- $this->xlq_filetype['ras']="image/x-cmu-raster";
- $this->xlq_filetype['pbm']="image/x-portable-bitmap";
- $this->xlq_filetype['ppm']="image/x-portable-pixmap";
- $this->xlq_filetype['xbm']="image/x-xbitmap";
- $this->xlq_filetype['xwd']="image/x-xwindowdump";
- $this->xlq_filetype['ief']="image/ief";
- $this->xlq_filetype['tif']="image/tiff";
- $this->xlq_filetype['tiff']="image/tiff";
- $this->xlq_filetype['pnm']="image/x-portable-anymap";
- $this->xlq_filetype['pgm']="image/x-portable-graymap";
- $this->xlq_filetype['rgb']="image/x-rgb";
- $this->xlq_filetype['xpm']="image/x-xpixmap";
- $this->xlq_filetype['txt']="text/plain";
- $this->xlq_filetype['c']="text/plain";
- $this->xlq_filetype['cc']="text/plain";
- $this->xlq_filetype['h']="text/plain";
- $this->xlq_filetype['html']="text/html";
- $this->xlq_filetype['htm']="text/html";
- $this->xlq_filetype['htl']="text/html";
- $this->xlq_filetype['rtx']="text/richtext";
- $this->xlq_filetype['etx']="text/x-setext";
- $this->xlq_filetype['tsv']="text/tab-separated-values";
- $this->xlq_filetype['mpeg']="video/mpeg";
- $this->xlq_filetype['mpg']="video/mpeg";
- $this->xlq_filetype['mpe']="video/mpeg";
- $this->xlq_filetype['avi']="video/x-msvideo";
- $this->xlq_filetype['qt']="video/quicktime";
- $this->xlq_filetype['mov']="video/quicktime";
- $this->xlq_filetype['moov']="video/quicktime";
- $this->xlq_filetype['movie']="video/x-sgi-movie";
- $this->xlq_filetype['au']="audio/basic";
- $this->xlq_filetype['snd']="audio/basic";
- $this->xlq_filetype['wav']="audio/x-wav";
- $this->xlq_filetype['aif']="audio/x-aiff";
- $this->xlq_filetype['aiff']="audio/x-aiff";
- $this->xlq_filetype['aifc']="audio/x-aiff";
- $this->xlq_filetype['swf']="application/x-shockwave-flash";
- }
- }
- ?>
-
复制代码
|
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31