<?php
# Version 1.0
class file_handle
{
var $upload_dir = NULL;
var $use_log = '';
##-----------------------------------------------------------------------------##
## Show Use Log ##
##-----------------------------------------------------------------------------##
function showLog()
{
$this->use_log .= "showLog()"."<br />\n";
return $this->use_log;
}
##-----------------------------------------------------------------------------##
## Add Log Entry ##
##-----------------------------------------------------------------------------##
function editLog( $content = NULL )
{
$this->use_log .= ' ' . $content . "<br />\n";
}
##-----------------------------------------------------------------------------##
## Set Upload Directory ##
##-----------------------------------------------------------------------------##
function setUploadDir ( $dir_path = NULL )
{
$this->use_log .= 'setUploadDir:';
if( file_exists( $dir_path ) && is_dir( $dir_path ) )
{
$this->upload_dir = $dir_path;
file_handle::editLog("to [$dir_path] -> success");
} else // Directory specified was not a directory or could not be found
{
file_handle::editLog("to [$dir_path] -> failed");
return false;
}
}
##-----------------------------------------------------------------------------##
## Rename FIle ##
##-----------------------------------------------------------------------------##
function renameFile( $file_path = NULL, $file_path_new = NULL )
{
$this->use_log .= 'renameFile:';
if( file_exists( $file_path ) && is_file( $file_path ) )
{
if( rename( $file_path, $file_path_new ) )
{
file_handle::editLog("from [$file_path] to [$file_path_new] -> success");
return true;
}
else // Could not rename the file
{
file_handle::editLog("from [$file_path] to [$file_path_new] -> fail (Could not rename the file)");
return false;
}
} else // File specified was not a file or could not be found
{
file_handle::editLog("from [$file_path] to [$file_path_new] -> fail (File specified was not a file or could not be found)");
return false;
}
}
##-----------------------------------------------------------------------------##
## Rename Directory ##
##-----------------------------------------------------------------------------##
function renameDir( $dir_path = NULL, $dir_path_new = NULL )
{
$this->use_log .= 'renameDir:';
if( file_exists( $dir_path ) && is_dir( $dir_path ) )
{
if( rename( $dir_path, $dir_path_new ) )
{
file_handle::editLog("from [$dir_path] to [$dir_path_new] -> success");
return true;
}
else // Could not rename the file
{
file_handle::editLog("from [$dir_path] to [$dir_path_new] -> fail (Could not rename the directory)");
return false;
}
} else // File specified was not a file or could not be found
{
file_handle::editLog("from [$dir_path] to [$dir_path_new] -> fail (Directory specified was not a directory or could not be found)");
return false;
}
}
##-----------------------------------------------------------------------------##
## Remove File From Server ##
##-----------------------------------------------------------------------------##
function removeFile( $file_path = NULL )
{
$this->use_log .= 'removeFile:';
if( file_exists( $file_path ) && is_file( $file_path ) )
{
if( unlink( $file_path ) )
{
file_handle::editLog("[$file_path] -> success");
return true;
}
else // Unable to remove the file
{
file_handle::editLog("[$file_path] -> fail (Unable to remove the file)");
return false;
}
}else // File specified was not a file or could not be found
{
file_handle::editLog("[$file_path] -> fail (File specified was not a file or could not be found)");
return false;
}
}
##-----------------------------------------------------------------------------##
## Remove Directory ##
##-----------------------------------------------------------------------------##
function removeDir( $dir_path )
{
$this->use_log .= 'removeDir:';
if( file_exists( $dir_path ) && is_dir( $dir_path ) )
{
if( rmdir( $dir_path ) )
{
file_handle::editLog("[$dir_path] -> success");
return true;
} else
{
file_handle::editLog("[$dir_path] -> fail (could not remove dir, check permissions)");
return false;
}
} else
{
file_handle::editLog("[$dir_path] -> fail (Directory specified was not a directory or could not be found)");
return false;
}
}
##-----------------------------------------------------------------------------##
## Creat Directory ##
##-----------------------------------------------------------------------------##
function createDir( $dir_path, $cmode = 0755 )
{
$this->use_log .= 'createDir:';
if( !( file_exists( $dir_path ) ) && !( is_dir( $dir_path ) ) )
{
if( mkdir( $dir_path ) )
{
file_handle::editLog("[$dir_path] -> success");
@chmod( $dir_path, $cmode );
return true;
} else
{
file_handle::editLog("[$dir_path] -> fail (could not make dir, check permissions)");
return false;
}
} else
{
file_handle::editLog("[$dir_path] -> fail (Directory already exists)");
return false;
}
}
##-----------------------------------------------------------------------------##
## Upload file to server ##
##-----------------------------------------------------------------------------##
function uploadFile( $name = NULL, $newname = NULL )
{
$this->use_log .= 'uploadFile:';
if( is_uploaded_file( $_FILES[$name]['tmp_name'] ) )
if( move_uploaded_file( $_FILES[$name]['tmp_name'], $this->upload_dir.'/'.$newname ) )
{
file_handle::editLog("upload [$name] move to [{$this->upload_dir}] -> success");
return true;
}
else
{
file_handle::editLog("upload [$name] move to [{$this->upload_dir}] -> fail (Could not move the file)");
return false;
}
else
{
file_handle::editLog("upload [$name] move to [{$this->upload_dir}] -> fail (File was not an uploaded file)");
return false;
}
}
##-----------------------------------------------------------------------------##
## File types ##
##-----------------------------------------------------------------------------##
function fileType( $extension = NULL )
{
file_handle::editLog("fileType: [$extension]");
$mime_type =
array (
'ai' => 'application/postscript',
'aif' => 'audio/x-aiff',
'aifc' => 'audio/x-aiff',
'aiff' => 'audio/x-aiff',
'asc' => 'text/plain',
'au' => 'audio/basic',
'avi' => 'video/x-msvideo',
'bcpio' => 'application/x-bcpio',
'bin' => 'application/octet-stream',
'bmp' => 'image/bmp',
'cdf' => 'application/x-netcdf',
'cgm' => 'image/cgm',
'class' => 'application/octet-stream',
'cpio' => 'application/x-cpio',
'cpt' => 'application/mac-compactpro',
'csh' => 'application/x-csh',
'css' => 'text/css',
'dcr' => 'application/x-director',
'dir' => 'application/x-director',
'djv' => 'image/vnd.djvu',
'djvu' => 'image/vnd.djvu',
'dll' => 'application/octet-stream',
'dms' => 'application/octet-stream',
'doc' => 'application/msword',
'dtd' => 'application/xml-dtd',
'dvi' => 'application/x-dvi',
'dxr' => 'application/x-director',
'eps' => 'application/postscript',
'etx' => 'text/x-setext',
'exe' => 'application/octet-stream',
'ez' => 'application/andrew-inset',
'gif' => 'image/gif',
'gram' => 'application/srgs',
'grxml' => 'application/srgs+xml',
'gtar' => 'application/x-gtar',
'gzip' => 'application/x-gzip',
'hdf' => 'application/x-hdf',
'hqx' => 'application/mac-binhex40',
'htm' => 'text/html',
'html' => 'text/html',
'ice' => 'x-conference/x-cooltalk',
'ico' => 'image/x-icon',
'ics' => 'text/calendar',
'ief' => 'image/ief',
'ifb' => 'text/calendar',
'iges' => 'model/iges',
'igs' => 'model/iges',
'jpe' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'js' => 'application/x-javascript',
'kar' => 'audio/midi',
'latex' => 'application/x-latex',
'lha' => 'application/octet-stream',
'lzh' => 'application/octet-stream',
'm3u' => 'audio/x-mpegurl',
'man' => 'application/x-troff-man',
'mathml' => 'application/mathml+xml',
'me' => 'application/x-troff-me',
'mesh' => 'model/mesh',
'mid' => 'audio/midi',
'midi' => 'audio/midi',
'mov' => 'video/quicktime',
'movie' => 'video/x-sgi-movie',
'mp2' => 'audio/mpeg',
'mp3' => 'audio/mpeg',
'mpe' => 'video/mpeg',
'mpeg' => 'video/mpeg',
'mpg' => 'video/mpeg',
'mpga' => 'audio/mpeg',
'ms' => 'application/x-troff-ms',
'msh' => 'model/mesh',
'mxu' => 'video/vnd.mpegurl',
'nc' => 'application/x-netcdf',
'oda' => 'application/oda',
'ogg' => 'application/ogg',
'pbm' => 'image/x-portable-bitmap',
'pdb' => 'chemical/x-pdb',
'pdf' => 'application/pdf',
'pgm' => 'image/x-portable-graymap',
'pgn' => 'application/x-chess-pgn',
'png' => 'image/png',
'pnm' => 'image/x-portable-anymap',
'ppm' => 'image/x-portable-pixmap',
'ppt' => 'application/vnd.ms-powerpoint',
'ps' => 'application/postscript',
'qt' => 'video/quicktime',
'ra' => 'audio/x-realaudio',
'ram' => 'audio/x-pn-realaudio',
'ras' => 'image/x-cmu-raster',
'rdf' => 'application/rdf+xml',
'rgb' => 'image/x-rgb',
'rm' => 'audio/x-pn-realaudio',
'roff' => 'application/x-troff',
'rpm' => 'audio/x-pn-realaudio-plugin',
'rtf' => 'text/rtf',
'rtx' => 'text/richtext',
'sgm' => 'text/sgml',
'sgml' => 'text/sgml',
'sh' => 'application/x-sh',
'shar' => 'application/x-shar',
'silo' => 'model/mesh',
'sit' => 'application/x-stuffit',
'skd' => 'application/x-koan',
'skm' => 'application/x-koan',
'skp' => 'application/x-koan',
'skt' => 'application/x-koan',
'smi' => 'application/smil',
'smil' => 'application/smil',
'snd' => 'audio/basic',
'so' => 'application/octet-stream',
'spl' => 'application/x-futuresplash',
'src' => 'application/x-wais-source',
'sv4cpio' => 'application/x-sv4cpio',
'sv4crc' => 'application/x-sv4crc',
'svg' => 'image/svg+xml',
'swf' => 'application/x-shockwave-flash',
't' => 'application/x-troff',
'tar' => 'application/x-tar',
'tcl' => 'application/x-tcl',
'tex' => 'application/x-tex',
'texi' => 'application/x-texinfo',
'texinfo' => 'application/x-texinfo',
'tif' => 'image/tiff',
'tiff' => 'image/tiff',
'tr' => 'application/x-troff',
'tsv' => 'text/tab-separated-values',
'txt' => 'text/plain',
'ustar' => 'application/x-ustar',
'vcd' => 'application/x-cdlink',
'vrml' => 'model/vrml',
'vxml' => 'application/voicexml+xml',
'wav' => 'audio/x-wav',
'wbmp' => 'image/vnd.wap.wbmp',
'wbxml' => 'application/vnd.wap.wbxml',
'wml' => 'text/vnd.wap.wml',
'wmlc' => 'application/vnd.wap.wmlc',
'wmls' => 'text/vnd.wap.wmlscript',
'wmlsc' => 'application/vnd.wap.wmlscriptc',
'wrl' => 'model/vrml',
'xbm' => 'image/x-xbitmap',
'xht' => 'application/xhtml+xml',
'xhtml' => 'application/xhtml+xml',
'xls' => 'application/vnd.ms-excel',
'xml' => 'application/xml',
'xpm' => 'image/x-xpixmap',
'xsl' => 'application/xml',
'xslt' => 'application/xslt+xml',
'xwd' => 'image/x-xwindowdump',
'xyz' => 'chemical/x-xyz',
'zip' => 'application/zip'
);
if( isset( $mime_type[$extension] ) )
return $mime_type[$extension];
else
return $mime_type['exe'];
}
##-----------------------------------------------------------------------------##
## Download File From Server ##
##-----------------------------------------------------------------------------##
function downloadFile( $file_path = NULL )
{
$this->use_log .= 'downloadFile:';
if( file_exists( $file_path ) && is_file( $file_path ) )
{
header( 'Content-type: ' . file_handle :: getFileType( $file_path ) );
header( "Content-Disposition: attachment; filename={$file_path}" );
readfile( $file_name );
file_handle::editLog("[$file_path] -> success");
return true;
} else
{
file_handle::editLog("[$file_path] -> fail (file not found or is not a file)");
return false;
}
}
##-----------------------------------------------------------------------------##
## Get File Extension ##
##-----------------------------------------------------------------------------##
function getFileExtension( $file_path = NULL )
{
$this->use_log .= 'getFileExtension:';
if( $file_path )
{
file_handle::editLog("[$file_path] -> success");
return strtolower( substr( strrchr( $file_path,"." ),1 ) );
} else
{
file_handle::editLog("[$file_path] -> fail (file path not set)");
return false;
}
}
##-----------------------------------------------------------------------------##
## Get File Type ##
##-----------------------------------------------------------------------------##
function getFileType( $file_path = NULL )
{
$this->use_log .= 'getFileType:';
if( $file_path )
{
file_handle::editLog("[$file_path] -> success");
return file_handle :: fileType( file_handle :: getFileExtension( $file_path ) );
} else
{
file_handle::editLog("[$file_path] -> fail (file path not set)");
return false;
}
}
}
?>