[Java] java 文件上传类 →→→→→进入此内容的聊天室

来自 , 2021-03-30, 写在 Java, 查看 136 次.
URL http://www.code666.cn/view/692f93be
  1. <?PHP
  2. /**
  3.  * Uploader
  4.  *
  5.  * @package my
  6.  * @author php100.com
  7.  * @copyright 2010
  8.  * @version $Id$
  9.  * @access public
  10.  */
  11. class Uploader {
  12.  
  13.     public $files = array();
  14.     private $errors = array();
  15.     private $file_names = array();
  16.     private $directory = NULL;
  17.     private $uploaded = false;
  18.  
  19.     # uploaded file name
  20.     public $uploaded_files = array();
  21.     private $file_new_name = NULL;
  22.     private $results = NULL;
  23.  
  24.     /**
  25.      * set directory attribute
  26.      *
  27.      * @param mixed $directory
  28.      * @return
  29.      */
  30.     function directory($directory) {
  31.         if (!is_dir($directory)) {
  32.             $this -> errors []= $directory.' not a directory';
  33.         }
  34.         if (!is_writable($directory)) {
  35.             $this -> errors []= $directory.' unwritable';
  36.         }
  37.         $this -> directory = $directory;
  38.     }
  39.  
  40.     /**
  41.      * set files attribute
  42.      *
  43.      * @param mixed $files
  44.      * @return
  45.      */
  46.     function files($files)
  47.     {
  48.         if(empty($files)) {
  49.             throw new Exception('file array is empty');
  50.         }
  51.         if (!is_array($files['tmp_name'])) {
  52.             $this -> files['tmp_name'][] = $files['tmp_name'];
  53.             $this -> files['name'][] = $files['name'];
  54.             $this -> files['type'][] = $files['type'];
  55.             $this -> files['size'][] = $files['size'];
  56.         }
  57.         else {
  58.             for ($i = 0; $i < count($files['name']); $i++) {
  59.                 if ($files['name'][$i]) {
  60.                     $this -> files['tmp_name'][] = $files['tmp_name'][$i];
  61.                     $this -> files['name'][] = $files['name'][$i];
  62.                     $this -> files['type'][] = $files['type'][$i];
  63.                     $this -> files['size'][] = $files['size'][$i];
  64.                 }
  65.             }
  66.         }
  67.     }
  68.  
  69.     /**
  70.      * Uploader::bad_character_rewrite()
  71.      *
  72.      * @param mixed $text
  73.      * @return
  74.      */
  75.     private function bad_character_rewrite($text)
  76.     {
  77.             $first = array("\\\\", "/", ":", ";", "~", "|", "(", ")", "\\"", "#", "*", "$", "@", "%", "[", "]", "{", "}", "<", ">", "`", "'", ",", " ", "臒", "臑", "眉", "脺", "艧", "艦", "谋", "陌", "枚", "脰", "莽", "脟");
  78.            $last = array("_", "_", "_", "_", "_", "_", "", "_", "_", "_", "_", "_", "_", "_", "_", "_", "_", "_", "_", "_", "_", "", "_", "_", "g", "G", "u", "U", "s", "S", "i", "I", "o", "O", "c", "C");
  79.            $text_rewrite = str_replace($first, $last, $text);
  80.            return $text_rewrite;
  81.    }
  82.  
  83.    /**
  84.     * get file extension
  85.     *
  86.     * @param mixed $file_name
  87.     * @return
  88.     */
  89.    public function file_extension($file_name)
  90.    {
  91.        $file_extension = strtolower(substr(strrchr($file_name, '.'), 1));
  92.        return $file_extension;
  93.    }
  94.  
  95.    private function file_name($file)
  96.    {
  97.        return strtolower(substr($file, 0, strpos($file, '.')));
  98.    }
  99.  
  100.    /**
  101.     * create random file name
  102.     *
  103.     * @param mixed $file_name  no used
  104.     * @return
  105.     */
  106.    private function _file_name_control($file_name)
  107.    {
  108.        if(file_exists($this->directory.'/'.$file_name)) {
  109.            //return $this->file_name($file_name).strtolower(rand() % 1000000).'.'.$this->file_extension($file_name);
  110.            return strtolower(rand() % 1000000).'_'.$file_name;
  111.        }
  112.        else
  113.            return $file_name;
  114.    }
  115.  
  116.    /**
  117.     * Uploader::_begin_upload()
  118.     *
  119.     * @param mixed $extensions
  120.     * @return void
  121.     */
  122.    function _begin_upload($extensions)
  123.    {
  124.        if(!count($this->errors)) {
  125.            for ($i = 0; $i < count($this -> files['tmp_name']); $i++)
  126.            {
  127.                if (in_array($this->file_extension($this->files['name'][$i]), $extensions))
  128.                {
  129.                    $this->file_new_name = $this ->_file_name_control($this-> files['name'][$i]);
  130.                    move_uploaded_file($this -> files['tmp_name'][$i], $this-> directory.'/'.$this -> file_new_name);
  131.                    $this -> uploaded_files[] = $this -> file_new_name;
  132.                    $this -> results .= '<li><strong>'.$this -> files['name'][$i].'</strong> change name to  <strong>'.$this -> file_new_name.'</strong>, file size <br />(~'.round($this -> files['size'][$i] / 1024, 2).' kb). </li>';
  133.                }
  134.                else
  135.                {
  136.                    $this -> results .= '<li>'.$this -> files['name'][$i].' no access type</li>';
  137.                }
  138.            }
  139.            $this -> uploaded = true;
  140.        } else {
  141.            foreach($this->errors as $error) {
  142.                throw new Exception($error);
  143.            }
  144.        }
  145.    }
  146.  
  147.    /**
  148.     * print report
  149.     *
  150.     * @return
  151.     */
  152.    function result_report()
  153.    {
  154.        if ($this -> uploaded == true) {
  155.            echo '<ul>';
  156.            echo $this -> results;
  157.            echo '</ul>';
  158.        }
  159.    }
  160.  
  161.    /**
  162.     * Uploader::upload()
  163.     *
  164.     * @param mixed $files
  165.     * @param mixed $directory
  166.     * @param mixed $extensions
  167.     * @return
  168.     */
  169.    function upload($files, $directory, $extensions=array('jpg', 'jpeg', 'png', 'gif'))
  170.    {
  171.        $this -> directory($directory);
  172.        $this -> files($files);
  173.        $this -> _begin_upload($extensions);
  174.    }
  175. }
  176. //该片段来自于http://yuncode.net
  177.  

回复 "java 文件上传类"

这儿你可以回复上面这条便签

captcha