Source for file FileUpload.php

Documentation is available at FileUpload.php

  1. <?php
  2. /**
  3.  * Teeple2 - PHP5 Web Application Framework inspired by Seasar2
  4.  *
  5.  * PHP versions 5
  6.  *
  7.  * LICENSE: This source file is subject to version 3.0 of the PHP license
  8.  * that is available through the world-wide-web at the following URI:
  9.  * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
  10.  * the PHP License and are unable to obtain it through the web, please
  11.  * send a note to license@php.net so we can mail you a copy immediately.
  12.  *
  13.  * @package     teeple
  14.  * @author      Mitsutaka Sato <miztaka@gmail.com>
  15.  * @license     http://www.php.net/license/3_0.txt  PHP License 3.0
  16.  */
  17.  
  18. /**
  19.  * FileUpload関連の処理を行う(複数アップロード対応版)
  20.  *
  21.  * @package     teeple
  22.  */
  23. {
  24.     /**
  25.      * @var フォームで指定したフィールド名を保持 
  26.      *
  27.      * @access  private
  28.      * @since   3.1.0
  29.      */
  30.     var $_name;
  31.     
  32.     /**
  33.      * @var ファイル移動後のファイルのモードを保持する 
  34.      *
  35.      * @access  private
  36.      * @since   3.1.0
  37.      */
  38.     var $_filemode;
  39.  
  40.     /**
  41.      * コンストラクター
  42.      *
  43.      * @access  public
  44.      * @since   3.1.0
  45.      */
  46.     function __construct()
  47.     {
  48.         $this->_name     "";   //ファイル名を配列に格納
  49.         $this->_filemode 0644;
  50.     }
  51.  
  52.     /**
  53.      * フォームで指定したフィールド名を返却
  54.      *
  55.      * @return  string  フィールド名
  56.      * @access  public
  57.      * @since   3.1.0
  58.      */
  59.     function getName()
  60.     {
  61.         return $this->_name;
  62.     }
  63.     
  64.     /**
  65.      * フォームで指定したフィールド名をセット
  66.      *
  67.      * @param   string  $name   フィールド名
  68.      * @access  public
  69.      * @since   3.1.0
  70.      */
  71.     function setName($name)
  72.     {
  73.         $this->_name $name;
  74.     }
  75.     
  76.     /**
  77.      * ファイル移動後のファイルのモードを返却
  78.      *
  79.      * @return  integer ファイルのモード
  80.      * @access  public
  81.      * @since   3.1.0
  82.      */
  83.     function getFilemode()
  84.     {
  85.         return $this->_filemode;
  86.     }
  87.     
  88.     /**
  89.      * ファイル移動後のファイルのモードをセット
  90.      *
  91.      * @param   integer $filemode   ファイルのモード
  92.      * @access  public
  93.      * @since   3.1.0
  94.      */
  95.     function setFilemode($filemode)
  96.     {
  97.         $this->_filemode octdec($filemode);
  98.     }
  99.  
  100.     /**
  101.      * アップロードされた数を返却
  102.      *
  103.      * @return  integer アップロードされた数
  104.      * @access  public
  105.      * @since   3.1.0
  106.      */
  107.     function count({
  108.         $name $this->getName();
  109.         if (is_array($_FILES[$name]["name"])) {
  110.             return count($_FILES[$name]["name"]);
  111.         else {
  112.             return 1;
  113.         }
  114.     }
  115.     
  116.     /**
  117.      * クライアントマシンの元のファイル名を返却
  118.      *
  119.      * @return  array   クライアントマシンの元のファイル名の配列
  120.      * @access  public
  121.      * @since   3.1.0
  122.      */
  123.     function getOriginalName()
  124.     {
  125.         $original_name array();
  126.         //配列で返す
  127.         $name $this->getName();
  128.         if (($name != ""&& isset($_FILES[$name])) {
  129.             if (is_array($_FILES[$name]["name"])) {
  130.                 foreach ($_FILES[$name]["name"as $key => $value{
  131.                     $original_name[$key$value;
  132.                 }
  133.             }else if (isset($_FILES[$name]["name"])){
  134.                 $original_name[0$_FILES[$name]["name"];
  135.             }
  136.         }
  137.         return $original_name;
  138.     }
  139.     
  140.     /**
  141.      * ファイルのMIME型を返却
  142.      *
  143.      * @return  array   ファイルのMIME型の配列
  144.      * @access  public
  145.      * @since   3.1.0
  146.      */
  147.     function getMimeType()
  148.     {
  149.         $mime_type array();
  150.         //配列で返す
  151.         $name $this->getName();
  152.         if (($name != ""&& isset($_FILES[$name])) {
  153.             if (is_array($_FILES[$name]["type"])) {
  154.                 foreach ($_FILES[$name]["type"as $key => $value{
  155.                     $mime_type[$key$value;
  156.                 }
  157.             }else if (isset($_FILES[$name]["type"])){
  158.                 $mime_type[0$_FILES[$name]["type"];
  159.             }
  160.         }
  161.         return $mime_type;
  162.     }
  163.     
  164.     /**
  165.      * アップロードされたファイルのバイト単位のサイズを返却
  166.      *
  167.      * @return  array   ファイルのサイズの配列
  168.      * @access  public
  169.      * @since   3.1.0
  170.      */
  171.     function getFilesize()
  172.     {
  173.         $filesize array();
  174.         //配列で返す
  175.         $name $this->getName();
  176.         if (($name != ""&& isset($_FILES[$name])) {
  177.             if (is_array($_FILES[$name]["size"])) {
  178.                 foreach ($_FILES[$name]["size"as $key => $value{
  179.                     $filesize[$key$value;
  180.                 }
  181.             }else if (isset($_FILES[$name]["size"])){
  182.                 $filesize[0$_FILES[$name]["size"];
  183.             }
  184.         }
  185.         return $filesize;
  186.     }
  187.     
  188.     /**
  189.      * テンポラリファイルの名前を返却
  190.      *
  191.      * @return  array   テンポラリファイルの名前の配列
  192.      * @access  public
  193.      * @since   3.1.0
  194.      */
  195.     function getTmpName()
  196.     {
  197.         $tmp_name array();
  198.         //配列で返す
  199.         $name $this->getName();
  200.         if (($name != ""&& isset($_FILES[$name])) {
  201.             if (is_array($_FILES[$name]["tmp_name"])) {
  202.                 foreach ($_FILES[$name]["tmp_name"as $key => $value{
  203.                     $tmp_name[$key$value;
  204.                 }
  205.             }else if (isset($_FILES[$name]["tmp_name"])){
  206.                 $tmp_name[0$_FILES[$name]["tmp_name"];
  207.             }
  208.         }
  209.         return $tmp_name;
  210.     }
  211.     
  212.     /**
  213.      * ファイルアップロードに関するエラーコードを返却
  214.      *
  215.      * @return  array   ファイルアップロードに関するエラーコードの配列
  216.      * @access  public
  217.      * @since   3.1.0
  218.      */
  219.     function getError()
  220.     {
  221.         $error_list array();
  222.         //配列で返す
  223.         $name $this->getName();
  224.         if (($name != ""&& isset($_FILES[$name])) {
  225.             if (is_array($_FILES[$name]["error"])) {
  226.                 foreach ($_FILES[$name]["error"as $key => $value{
  227.                     $error_list[$key$value;
  228.                 }
  229.             }else if (isset($_FILES[$name]["error"])){
  230.                 $error_list[0$_FILES[$name]["error"];
  231.             }
  232.         }
  233.         return $error_list;
  234.     }
  235.     
  236.     /**
  237.      * 指定されたMIME型になっているか?
  238.      *
  239.      * @param   array    $type  MIME型の配列
  240.      * @return  array[boolean]  指定されたMIME型になっているか?の配列
  241.      * @access  public
  242.      * @since   3.1.0
  243.      */
  244.     function checkMimeType($type_list)
  245.     {
  246.         $mime_type_check array();
  247.         $mime_type $this->getMimeType();
  248.         if (count($mime_type0{
  249.             foreach ($mime_type as $key => $val{
  250.                 if (isset($type_list[$key])) {
  251.                     $type $type_list[$key];
  252.                 else if (isset($type_list["default"])){
  253.                     $type $type_list["default"];
  254.                 else {
  255.                     $type "";
  256.                 }
  257.                 if ($type == "" || in_array($val,$type)  ) {
  258.                     $mime_type_check[$keytrue;
  259.                 }else {
  260.                     $mime_type_check[$keyfalse;
  261.                 }
  262.             }
  263.         }
  264.         return $mime_type_check;
  265.     }
  266.     
  267.     /**
  268.      * ファイルサイズが指定されたサイズ以下かどうか?
  269.      *
  270.      * @param   array   $size_list  基準となるファイルサイズの配列
  271.      * @return  array[boolean]    ファイルサイズが指定されたサイズ以下かどうか?の配列
  272.      * @access  public
  273.      * @since   3.1.0
  274.      */
  275.     function checkFilesize($size_list)
  276.     {
  277.         $filesize_check array();
  278.         $filesize $this->getFilesize();
  279.         if (count($filesize0{
  280.             foreach ($filesize as $key => $val{
  281.                 if (isset($size_list[$key])) {
  282.                     $size $size_list[$key];
  283.                 else if (isset($size_list["default"])) {
  284.                     $size $size_list["default"];
  285.                 else {
  286.                     $size "";
  287.                 }
  288.                 if ($size == "" || $val <= $size{
  289.                     $filesize_check[$keytrue;
  290.                 }else {
  291.                     $filesize_check[$keyfalse;
  292.                 }
  293.             }
  294.         }
  295.         return $filesize_check;
  296.     }
  297.  
  298.     /**
  299.      * 指定されたパスへファイルを移動(one file)
  300.      *
  301.      * @param   strint  $name   移動元のファイルの索引番号
  302.      * @param   strint  $dest   移動先のファイル名
  303.      * @return  boolean 移動に成功したかどうか
  304.      * @access  public
  305.      * @since   3.1.0
  306.      */
  307.     function move($id,$dest)
  308.     {
  309.         $tmp_name $this->getTmpName();
  310.         if (isset($tmp_name[$id])) {
  311.             if (move_uploaded_file($tmp_name[$id]$dest)) {
  312.                 chmod($dest$this->getFilemode());
  313.                 return true;
  314.             else {
  315.                 return false;
  316.             }
  317.         else {
  318.             return false;
  319.         }
  320.     }
  321. }
  322. ?>

Documentation generated on Mon, 26 Apr 2010 08:59:45 +0900 by phpDocumentor 1.4.3