1 关注者

类 yii\web\UploadedFile

继承关系yii\web\UploadedFile » yii\base\BaseObject
实现yii\base\Configurable
可用版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/web/UploadedFile.php

UploadedFile 表示上传文件的信息。

您可以调用 getInstance() 获取上传文件的实例,然后使用 saveAs() 将其保存到服务器。您还可以查询有关文件的信息,包括 $name$tempName$type$size$error$fullPath

有关 UploadedFile 的更多详细信息和用法信息,请参阅 处理上传的指南文章

公共属性

隐藏继承的属性

属性 类型 描述 定义于
$baseName string 原始文件基本名称。 yii\web\UploadedFile
$error integer 描述此文件上传状态的错误代码。 yii\web\UploadedFile
$extension string 文件扩展名。 yii\web\UploadedFile
$fullPath string|null 浏览器提交的完整路径。 yii\web\UploadedFile
$hasError boolean 上传的文件是否存在错误。 yii\web\UploadedFile
$name string 正在上传的文件的原始名称 yii\web\UploadedFile
$size integer 上传文件的实际大小(以字节为单位) yii\web\UploadedFile
$tempName string 上传文件在服务器上的路径。 yii\web\UploadedFile
$type string 上传文件的 MIME 类型(例如“image/gif”)。 yii\web\UploadedFile

公共方法

隐藏继承的方法

方法 描述 定义于
__call() 调用不是类方法的命名方法。 yii\base\BaseObject
__construct() UploadedFile 构造函数。 yii\web\UploadedFile
__get() 返回对象属性的值。 yii\base\BaseObject
__isset() 检查属性是否已设置,即已定义且不为 null。 yii\base\BaseObject
__set() 设置对象属性的值。 yii\base\BaseObject
__toString() 字符串输出。 yii\web\UploadedFile
__unset() 将对象属性设置为 null。 yii\base\BaseObject
canGetProperty() 返回一个值,指示属性是否可读。 yii\base\BaseObject
canSetProperty() 返回一个值,指示属性是否可设置。 yii\base\BaseObject
className() 返回此类的完全限定名称。 yii\base\BaseObject
getBaseName() yii\web\UploadedFile
getExtension() yii\web\UploadedFile
getHasError() yii\web\UploadedFile
getInstance() 返回给定模型属性的上传文件。 yii\web\UploadedFile
getInstanceByName() 根据给定的文件输入名称返回上传的文件。 yii\web\UploadedFile
getInstances() 返回给定模型属性的所有上传文件。 yii\web\UploadedFile
getInstancesByName() 返回对应于指定文件输入名称的上传文件数组。 yii\web\UploadedFile
hasMethod() 返回一个值,指示方法是否已定义。 yii\base\BaseObject
hasProperty() 返回一个值,指示属性是否已定义。 yii\base\BaseObject
init() 初始化对象。 yii\base\BaseObject
reset() 清理已加载的 UploadedFile 实例。 yii\web\UploadedFile
saveAs() 保存上传的文件。 yii\web\UploadedFile

受保护的方法

隐藏继承的方法

方法 描述 定义于
copyTempFile() 将临时文件复制到指定的文件中 yii\web\UploadedFile

属性详情

隐藏继承的属性

$baseName 公共属性

原始文件基本名称。

public string $baseName null
$error 公共属性

描述此文件上传状态的错误代码。

另请参阅 https://php.ac.cn/manual/en/features.file-upload.errors.php

public integer $error null
$extension 公共属性

文件扩展名。

public string $extension null
$fullPath 公共属性 (自版本 2.0.46 起可用)

浏览器提交的完整路径。请注意,此值并不总是包含真实的目录结构,并且不可信。从 PHP 8.1 开始可用。

public string|null $fullPath null
$hasError 公共属性

上传的文件是否存在错误。检查 $error 以获取详细的错误代码信息。

public boolean $hasError null
$name 公共属性

正在上传的文件的原始名称

public string $name null
$size 公共属性

上传文件的实际大小(以字节为单位)

public integer $size null
$tempName 公共属性

上传文件在服务器上的路径。注意,这是一个临时文件,将在当前请求处理完成后由 PHP 自动删除。

public string $tempName null
$type 公共属性

上传文件的 MIME 类型(例如“image/gif”)。由于此 MIME 类型未在服务器端进行检查,因此不要认为此值是可靠的。相反,请使用 yii\helpers\FileHelper::getMimeType() 来确定确切的 MIME 类型。

public string $type null

方法详情

隐藏继承的方法

__call() 公共方法

定义于: yii\base\BaseObject::__call()

调用不是类方法的命名方法。

不要直接调用此方法,因为它是一个 PHP 魔术方法,当调用未知方法时会隐式调用。

public mixed __call ( $name, $params )
$name string

方法名

$params 数组

方法参数

返回值 混合

方法返回值

抛出 yii\base\UnknownMethodException

调用未知方法时

                public function __call($name, $params)
{
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__construct() 公共方法

UploadedFile 构造函数。

public void __construct ( $config = [] )
$config 数组

将用于初始化对象属性的名称-值对

                public function __construct($config = [])
{
    $this->_tempResource = ArrayHelper::remove($config, 'tempResource');
    parent::__construct($config);
}

            
__get() 公共方法

定义于: yii\base\BaseObject::__get()

返回对象属性的值。

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 $value = $object->property; 时会隐式调用。

另请参阅 __set()

public mixed __get ( $name )
$name string

属性名

返回值 混合

属性值

抛出 yii\base\UnknownPropertyException

如果未定义属性

抛出 yii\base\InvalidCallException

如果属性是只写属性

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter();
    } elseif (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() 公共方法

定义于: yii\base\BaseObject::__isset()

检查属性是否已设置,即已定义且不为 null。

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 isset($object->property) 时会隐式调用。

注意,如果未定义属性,则将返回 false。

另请参阅 https://php.ac.cn/manual/en/function.isset.php

public boolean __isset ( $name )
$name string

属性名或事件名

返回值 boolean

命名的属性是否已设置(非 null)。

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    return false;
}

            
__set() 公共方法

定义于: yii\base\BaseObject::__set()

设置对象属性的值。

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 $object->property = $value; 时会隐式调用。

另请参阅 __get()

public void __set ( $name, $value )
$name string

属性名或事件名

$value 混合

属性值

抛出 yii\base\UnknownPropertyException

如果未定义属性

抛出 yii\base\InvalidCallException

如果属性是只读属性

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter($value);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    } else {
        throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
    }
}

            
__toString() 公共方法

字符串输出。

这是一个 PHP 魔术方法,返回对象的字符串表示形式。此处的实现返回上传文件的名称。

public string __toString ( )
返回值 string

对象的字符串表示形式

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

            
__unset() 公共方法

定义于: yii\base\BaseObject::__unset()

将对象属性设置为 null。

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 unset($object->property) 时会隐式调用。

注意,如果未定义属性,则此方法将不执行任何操作。如果属性是只读属性,则会抛出异常。

另请参阅 https://php.ac.cn/manual/en/function.unset.php

public void __unset ( $name )
$name string

属性名

抛出 yii\base\InvalidCallException

如果属性是只读属性。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
    }
}

            
canGetProperty() 公共方法

定义于: yii\base\BaseObject::canGetProperty()

返回一个值,指示属性是否可读。

如果属性可读,则

  • 类具有与指定名称关联的 getter 方法(在这种情况下,属性名称不区分大小写);
  • 类具有与指定名称相同的成员变量(当 $checkVars 为 true 时);

另请参阅 canSetProperty()

public boolean canGetProperty ( $name, $checkVars true )
$name string

属性名

$checkVars boolean

是否将成员变量视为属性

返回值 boolean

属性是否可读

                public function canGetProperty($name, $checkVars = true)
{
    return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}

            
canSetProperty() 公共方法

定义于: yii\base\BaseObject::canSetProperty()

返回一个值,指示属性是否可设置。

如果属性可写,则

  • 该类具有与指定名称关联的 setter 方法(在这种情况下,属性名称不区分大小写);
  • 类具有与指定名称相同的成员变量(当 $checkVars 为 true 时);

另请参阅 canGetProperty()

public boolean canSetProperty ( $name, $checkVars true )
$name string

属性名

$checkVars boolean

是否将成员变量视为属性

返回值 boolean

属性是否可写

                public function canSetProperty($name, $checkVars = true)
{
    return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}

            
className() 公共静态方法
自 2.0.14 版起已弃用。在 PHP >=5.5 中,请使用 ::class 代替。

定义于: yii\base\BaseObject::className()

返回此类的完全限定名称。

public static string className ( )
返回值 string

此类的完全限定名称。

                public static function className()
{
    return get_called_class();
}

            
copyTempFile() 受保护方法 (自 2.0.32 版起可用)

将临时文件复制到指定的文件中

protected integer|false copyTempFile ( $targetFile )
$targetFile string

要复制到的文件的路径

返回值 integer|false

复制的字节总数,如果失败则为 false

                protected function copyTempFile($targetFile)
{
    $target = fopen($targetFile, 'wb');
    if ($target === false) {
        return false;
    }
    $result = stream_copy_to_stream($this->_tempResource, $target);
    @fclose($target);
    return $result;
}

            
getBaseName() 公共方法

public string getBaseName ( )
返回值 string

原始文件基本名称

                public function getBaseName()
{
    // https://github.com/yiisoft/yii2/issues/11012
    $pathInfo = pathinfo('_' . $this->name, PATHINFO_FILENAME);
    return mb_substr($pathInfo, 1, mb_strlen($pathInfo, '8bit'), '8bit');
}

            
getExtension() 公共方法

public string getExtension ( )
返回值 string

文件扩展名

                public function getExtension()
{
    return strtolower(pathinfo($this->name, PATHINFO_EXTENSION));
}

            
getHasError() 公共方法

public boolean getHasError ( )
返回值 boolean

上传的文件是否存在错误。检查 $error 以获取详细的错误代码信息。

                public function getHasError()
{
    return $this->error != UPLOAD_ERR_OK;
}

            
getInstance() 公共静态方法

返回给定模型属性的上传文件。

文件应使用 yii\widgets\ActiveField::fileInput() 上传。

另请参阅 getInstanceByName()

public static yii\web\UploadedFile|null getInstance ( $model, $attribute )
$model yii\base\Model

数据模型

$attribute string

属性名称。属性名称可以包含数组索引。例如,用于表格文件上传的 '[1]file';以及用于文件数组中元素的 'file[1]'。

返回值 yii\web\UploadedFile|null

上传文件的实例。如果未为指定的模型属性上传任何文件,则返回 Null。

                public static function getInstance($model, $attribute)
{
    $name = Html::getInputName($model, $attribute);
    return static::getInstanceByName($name);
}

            
getInstanceByName() 公共静态方法

根据给定的文件输入名称返回上传的文件。

名称可以是普通字符串或类似数组元素的字符串(例如 'Post[imageFile]' 或 'Post[0][imageFile]')。

public static yii\web\UploadedFile|null getInstanceByName ( $name )
$name string

文件输入字段的名称。

返回值 yii\web\UploadedFile|null

上传文件的实例。如果未为指定的名称上传任何文件,则返回 Null。

                public static function getInstanceByName($name)
{
    $files = self::loadFiles();
    return isset($files[$name]) ? new static($files[$name]) : null;
}

            
getInstances() 公共静态方法

返回给定模型属性的所有上传文件。

public static yii\web\UploadedFile[] getInstances ( $model, $attribute )
$model yii\base\Model

数据模型

$attribute string

属性名称。属性名称可以包含用于表格文件上传的数组索引,例如 '[1]file'。

返回值 yii\web\UploadedFile[]

UploadedFile 对象的数组。如果未为给定属性找到任何可用文件,则返回空数组。

                public static function getInstances($model, $attribute)
{
    $name = Html::getInputName($model, $attribute);
    return static::getInstancesByName($name);
}

            
getInstancesByName() 公共静态方法

返回对应于指定文件输入名称的上传文件数组。

这主要用于上传多个文件并保存为 'files[0]'、'files[1]'、'files[n]'... 的情况,您可以通过将 'files' 作为名称传递来检索所有文件。

public static yii\web\UploadedFile[] getInstancesByName ( $name )
$name string

文件的数组名称

返回值 yii\web\UploadedFile[]

UploadedFile 对象的数组。如果未找到合适的上传,则返回空数组。请注意,此数组将包含来自所有子数组的所有文件,无论它们嵌套多深。

                public static function getInstancesByName($name)
{
    $files = self::loadFiles();
    if (isset($files[$name])) {
        return [new static($files[$name])];
    }
    $results = [];
    foreach ($files as $key => $file) {
        if (strpos($key, "{$name}[") === 0) {
            $results[] = new static($file);
        }
    }
    return $results;
}

            
hasMethod() 公共方法

定义于: yii\base\BaseObject::hasMethod()

返回一个值,指示方法是否已定义。

默认实现是对 php 函数 method_exists() 的调用。当您实现 php 魔术方法 __call() 时,您可以重写此方法。

public boolean hasMethod ( $name )
$name string

方法名

返回值 boolean

方法是否已定义

                public function hasMethod($name)
{
    return method_exists($this, $name);
}

            
hasProperty() 公共方法

定义于: yii\base\BaseObject::hasProperty()

返回一个值,指示属性是否已定义。

如果属性已定义,则

  • 该类具有与指定名称关联的 getter 或 setter 方法(在这种情况下,属性名称不区分大小写);
  • 类具有与指定名称相同的成员变量(当 $checkVars 为 true 时);

另请参阅

public boolean hasProperty ( $name, $checkVars true )
$name string

属性名

$checkVars boolean

是否将成员变量视为属性

返回值 boolean

属性是否已定义

                public function hasProperty($name, $checkVars = true)
{
    return $this->canGetProperty($name, $checkVars) || $this->canSetProperty($name, false);
}

            
init() 公共方法

定义于: yii\base\BaseObject::init()

初始化对象。

此方法在对象使用给定配置初始化后,在构造函数结束时调用。

public void init ( )

                public function init()
{
}

            
reset() 公共静态方法

清理已加载的 UploadedFile 实例。

此方法主要由测试脚本用于设置测试环境。

public static void reset ( )

                public static function reset()
{
    self::$_files = null;
}

            
saveAs() 公共方法

保存上传的文件。

如果目标文件 $file 已经存在,它将被覆盖。

另见 $error

public boolean saveAs ( $file, $deleteTempFile true )
$file string

保存上传文件的路径或路径别名。

$deleteTempFile boolean

是否在保存后删除临时文件。如果为 true,则无法在当前请求中再次保存上传的文件。

返回值 boolean

文件是否成功保存

                public function saveAs($file, $deleteTempFile = true)
{
    if ($this->hasError) {
        return false;
    }
    $targetFile = Yii::getAlias($file);
    if (is_resource($this->_tempResource)) {
        $result = $this->copyTempFile($targetFile);
        return $deleteTempFile ? @fclose($this->_tempResource) : (bool) $result;
    }
    return $deleteTempFile ? move_uploaded_file($this->tempName, $targetFile) : copy($this->tempName, $targetFile);
}