Home >Backend Development >PHP Tutorial >File upload class_PHP tutorial

File upload class_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 16:10:37849browse


使用示例:
upload.php
include_once "upload.class.php";
if ($Submit != '')
{
    $fileArr['file'] = $file;
    $fileArr['name'] = $file_name;
    $fileArr['size'] = $file_size;
    $fileArr['type'] = $file_type;
    /**Allowed file types to upload*/
    $filetypes = array('gif','jpg','jpge','png');
    /**File upload directory*/
    $savepath = "/usr/htdocs/upload/";
    /**No maximum limit 0 No limit*/
    $maxsize = 0;
    /**Override 0 not allowed 1 allowed*/
    $overwrite = 0;
    $upload = new upload($fileArr, $file_name, $savepath, $filetypes, $overwrite, $maxsize);
    if (!$upload->run())
    {
     echo  "上传失败".$upload->errmsg();
    }
}
?>


File upload











Upload class
upload.class.php

//
// +------------------------ --------------------------------------------------+
// | File upload                                                                                                                      🎜>|// | Author: whxbb(whxbb@21cn.com)                                                          -------------------------------------------------- ------------------+
//
// $Id: upload.class.php,v 1.0 2001/10/14 14:06:57 whxbb Exp $
//

$UPLOAD_CLASS_ERROR = array( 1 => 'This format file is not allowed to be uploaded',
2 => 'Directory cannot be written',
          3 = > 'File already exists',
                                                                                           " );

/**
* Purpose
* File upload
*
* Example
*
$fileArr['file'] = $file;
$fileArr['name'] = $file_name;
$fileArr['size'] = $file_size;
$fileArr['type'] = $file_type;
// File types allowed to be uploaded
$filetypes = array('gif', 'jpg','jpge','png');
// File upload directory
$savepath = "/usr/htdocs/upload/";
// No maximum limit 0 No limit
$maxsize = 0;
// Overwrite 0 not allowed 1 allowed
$overwrite = 0;
$upload = new upload($fileArr, $file_name, $savepath, $filetypes, $overwrite, $ maxsize);
if (!$upload->run())
{
echo $upload->errmsg();
}
*
* @author whxbb(whxbb@21cn.com)
* @version 0.1
*/
class upload
{
    var $file;
    var $file_name;
    var $file_size;
    var $file_type;

    /**save name*/
    var $savename;
    /**save path*/
    var $savepath;
    /**File format restrictions*/
    var $fileformat = array();
    /**overlay mode*/
    var $overwrite = 0;
    /**file maximum bytes*/
    var $maxsize = 0;
    /**file extension*/
    var $ext;
    /**Error code*/
    var $errno;

    /**
* Constructor
* @param $fileArr File information array 'file' Temporary file path and file name
'name' Upload file name
'size' Upload file size
' Upload file type
* @param savename File save name
* @param savepath File save path
* @param fileformat file format restriction array
* @param overwrite whether to overwrite 1, allow overwriting 0, prohibit overwriting
* @param maxsize Maximum file size
*/
    function upload($fileArr, $savename, $savepath, $fileformat, $overwrite = 0, $maxsize = 0) {
        $this->file = $fileArr['file'];
        $this->file_name = $fileArr['name'];
        $this->file_size = $fileArr['size'];
        $this->file_type = $fileArr['type'];

        $this->get_ext();
        $this->set_savepath($savepath);
        $this->set_fileformat($fileformat);
        $this->set_overwrite($overwrite);
        $this->set_savename($savename);
        $this->set_maxsize($maxsize);
    }

    /**Upload*/
    function run()
    {
        /**Check file format*/
        if (!$this->validate_format())
        {
            $this->errno = 1;
            return false;
        }
        /**Check if directory is writable*/
        if(!@is_writable($this->savepath))
        {
            $this->errno = 2;
            return false;
        }
        /**If overwriting is not allowed, check if the file already exists*/
        if($this->overwrite == 0 && @file_exists($this->savepath.$this->savename))
        {
            $this->errno = 3;
            return false;
        }
        /**If there is a size limit, check if the file exceeds the limit*/
        if ($this->maxsize != 0 )
        {
            if ($this->file_size > $this->maxsize)
            {
                $this->errno = 5;
                return false;
            }
        }
        /**File upload*/
       if(!@copy($this->file, $this->savepath.$this->savename))
       {
            $this->errno = 4;
            return false;
       }
       /**Delete temporary files*/
       $this->destory();
       return true;
    }

    /**
* File format check
* @access protect
*/
    function validate_format()
    {

        if (!is_array($this->fileformat))  // 没有格式限制
            return true;
       $ext = strtolower($this->ext);
        reset($this->fileformat);
        while(list($var, $key) = each($this->fileformat))
        {
            if (strtolower($key) == $ext)
                return true;
        }
        reset($this->fileformat);
        return false;
    }

    /**
* Get file extension
* access public
*/
    function get_ext()
    {
        $ext = explode(".", $this->file_name);
        $ext = $ext[count($ext) - 1];
        $this->ext = $ext;
    }
    /**
* Set the maximum byte limit for uploaded files
* @param $maxsize file size (bytes) 0: means no limit
* @access public
*/
    function set_maxsize($maxsize)
    {
        $this->maxsize = $maxsize;
    }

    /**
* Set coverage mode
* @param coverage mode 1: Allow coverage 0: Disable coverage
* @access public
*/
    function set_overwrite($overwrite)
    {
        $this->overwrite = $overwrite;
    }

    /**
* Set the file format that is allowed to be uploaded
* @param $fileformat The file extension array that is allowed to be uploaded
* @access public
*/
    function set_fileformat($fileformat)
    {
        $this->fileformat = $fileformat;
    }

/**
* Set the save path
* @param $savepath File saving path: ends with "/"
* @access public
*/
function set_savepath($savepath)
{
$this->savepath = $savepath;
}
/**
* Set the file save name
* @savename save name, if it is empty, the system will automatically generate a random file name
* @access public
*/
function set_savename($savename)
{
if ($savename == '') // If the file name is not set, a random file name is generated
{
srand ((double) microtime() * 1000000);
$rnd = rand(100,999);
$name = date('Ymdhis') + $rnd;
$name = $name." .".$this->ext;
       } else {
                                                                                                                                                              **
* Delete file
* @param $file The name of the file to be deleted
* @access public
*/
function del($file)
{
if(!@unlink($file))
{
$this->errno = 3;
return false;
}
return true;
}
/**
* Delete temporary files
* @access proctect
*/
function destory()
{
$this->del ($this->file);
}

/**
* Get error message
* @access public
* @return error msg string or false
*/
function errmsg()
{
global $UPLOAD_CLASS_ERROR;

if ($this->errno == 0)
return false;
else
return $UPLOAD_CLASS_ERROR[$this->errno];
}
}
? >




http://www.bkjia.com/PHPjc/314183.html

www.bkjia.com

http: //www.bkjia.com/PHPjc/314183.htmlTechArticleUsage example: upload.php ?php include_once "upload.class.php"; if ($Submit != ' ') { $fileArr['file'] = $file; $fileArr['name'] = $file_name; $fileArr['size'] = $file_size; $fileArr...
Statement:
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