Login   Register  
PHP Classes
elePHPant
Icontem

File: UploadedFile.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Emre Hasegeli  >  Uploaded File  >  UploadedFile.php  >  Download  
File: UploadedFile.php
Role: Class source
Content type: text/plain
Description: The base class
Class: Uploaded File
Process files uploaded using Web forms
Author: By
Last change: Revised.
Date: 5 years ago
Size: 2,915 bytes
 

Contents

Class file image Download
<?php
/**
 * Uploaded File Class
 *
 * @author    Emre Hasegeli
 */

require_once 'interface/File.php';

class 
UploadedFile implements iFile
{
    private 
$formInputName;
    protected 
$name;
    protected 
$extension;
    protected 
$size;

    public function 
__construct($formInputName$name NULL$extension NULL)
    {
        
$this->formInputName $formInputName;

        if(!
$name)
        {
            
$extension substr($_FILES[$this->formInputName]['name'], strrpos($_FILES[$this->formInputName]['name'], '.') + 1);

            
$name substr($_FILES[$this->formInputName]['name'], 0strrpos($_FILES[$this->formInputName]['name'], '.'));
        }
        if(!
$extension)
        {
            
$extension substr($namestrrpos($name'.') + 1);

            
$name substr($name0strrpos($name'.'));
        }

        
$this->name File::NameCheck($name);

        
$this->extension File::ExtensionCheck($extension);

        
$this->size $_FILES[$this->formInputName]['size'];

        
$this->exception();
    }

    public function 
__destruct()
    {
        unset(
$_FILES[$this->formInputName]);
    }

    public function 
__toString()
    {
        return 
$this->name '.' $this->extension;
    }

    public function 
Name()
    {
        return 
$this->name;
    }

    public function 
Extension()
    {
        return 
$this->extension;
    }

    const 
minSize 0;

    final private function 
exception()
    {
        if(
$_FILES[$this->formInputName]['error'])
            throw 
FileUploadException::Error($_FILES[$this->formInputName]['error']);

        
$this->minSizeControl(); //After PHP 5.3 this can be handled in this function

        
$this->typeException($_FILES[$this->formInputName]['type']);
    }

    protected function 
minSizeControl()
    {
        if(
$this->size <= self::minSize)
            throw new 
FileUploadException('The uploaded file is too small.');
    }

    protected function 
typeException($type)
    {
        if(
$type == 'application/octet-stream')
            throw new 
FileUploadException('The uploaded file is not an application.');
    }

    final public function 
Size()
    {
        return 
$this->size;
    }

    const 
object 'File'//After PHP 5.3 this can be written in interface

    
public function Move($directory)
    {
        if(
move_uploaded_file($_FILES[$this->formInputName]['tmp_name'], $directory $this->name '.' $this->extension))
        {
            
$object self::object;

            return new 
$object($directory$this->name$this->extension);

            unset(
$this);
        }
        else
            throw new 
FileUploadException('The file can not moved.');
    }

    public function 
Rename($name)
    {
        
$this->name File::NameCheck($name);
    }

    public function 
Delete()
    {
        if(
unlink($_FILES[$this->formInputName]['tmp_name']))
            unset(
$this);
        else
            throw new 
FileUploadException('The file can not deleted.');
    }

    public static function 
Select($formInputName)
    {
        if(
is_uploaded_file($_FILES[$formInputName]['tmp_name']))
            return new 
self($formInputName$name NULL$extension NULL);
        else
            return 
NULL;
    }
?>