Location: PHPKode > projects > SENAYAN Library Automation > senayan3-stable5/simbio2/simbio_FILE/simbio_file_upload.inc.php
<?php
/**
 * simbio_file_upload class
 * A File Upload helper class
 *
 * Copyright (C) 2007,2008  Arie Nugraha (hide@address.com)
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 *
 */

/**
 * Upload status constant
 */
define('UPLOAD_FAILED', 0);
define('UPLOAD_SUCCESS', 1);
define('FILETYPE_NOT_ALLOWED', 2);
define('FILESIZE_EXCED', 3);

class simbio_file_upload extends simbio
{
    private $allowable_ext = array('.jpg', '.jpeg', '.gif', '.png', '.html', '.htm', '.pdf', '.doc', '.txt');
    private $max_size = 1024000; // in bytes
    private $upload_dir = './';
    public $new_filename;


    /**
     * Method to set allowable file formats
     *
     * @param   array   $array_allowable_ext
     * @return  void
     */
    public function setAllowableFormat($array_allowable_ext)
    {
        if ($array_allowable_ext == '*') {
            $this->allowable_ext = '*';
            return;
        }

        if (is_array($array_allowable_ext)) {
            $this->allowable_ext = $array_allowable_ext;
        } else {
            echo 'setAllowableFormat method error : The argument for must be an array';
            return;
        }
    }


    /**
     * Method to set maximum size of file to upload
     *
     * @param   integer $int_max_size
     * @return  void
     */
    public function setMaxSize($int_max_size)
    {
        // checking for php.ini upload_size
        $this->max_size = intval($int_max_size);
    }


    /**
     * Method to set upload file directory
     *
     * @param   string  $str_upload_dir
     * @return  void
     */
    public function setUploadDir($str_upload_dir)
    {
        $this->upload_dir = $str_upload_dir;
    }


    /**
     * Method to upload file
     *
     * @param   string  $file_input_name
     * @param   string  $str_new_filename
     * @return  integer
     */
    public function doUpload($file_input_name, $str_new_filename = '')
    {
        // get file extension
        $file_ext = substr($_FILES[$file_input_name]['name'], strrpos($_FILES[$file_input_name]['name'], '.'));
        if (empty($str_new_filename)) {
            $this->new_filename = basename($_FILES[$file_input_name]['name']);
        } else {
            $this->new_filename = $str_new_filename.$file_ext;
        }

        $_isTypeAllowed = 0;
        // checking file extensions
        if ($this->allowable_ext != '*') {
            foreach ($this->allowable_ext as $ext) {
                if ($ext == $file_ext) {
                    $_isTypeAllowed++;
                }
            }

            if (!$_isTypeAllowed) {
                $this->error = 'Filetype is forbidden';
                return FILETYPE_NOT_ALLOWED;
            }
        }

        // check for file size
        $_size_kb = ((integer)$this->max_size)/1024;
        if ($_FILES[$file_input_name]['size'] > $this->max_size) {
            $this->error = 'Filesize is excedded maximum uploaded file size';
            return FILESIZE_EXCED;
        }

        // uploading file
        if (@move_uploaded_file($_FILES[$file_input_name]['tmp_name'], $this->upload_dir.'/'.$this->new_filename)) {
            return UPLOAD_SUCCESS;
        } else {
            $upload_error = error_get_last();
            $error_msg = '';
            if ($upload_error) {
                $error_msg = 'PHP Error ('.$upload_error['message'].')';
            }
            $this->error = 'Upload failed. Upload directory is not writable or not exists. '.$error_msg;
            return UPLOAD_FAILED;
        }
    }
}
?>
Return current item: SENAYAN Library Automation