类 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 |
公共方法
属性详情
描述此文件上传状态的错误代码。
另请参阅 https://php.ac.cn/manual/en/features.file-upload.errors.php。
浏览器提交的完整路径。请注意,此值并不总是包含真实的目录结构,并且不可信。从 PHP 8.1 开始可用。
上传文件的 MIME 类型(例如“image/gif”)。由于此 MIME 类型未在服务器端进行检查,因此不要认为此值是可靠的。相反,请使用 yii\helpers\FileHelper::getMimeType() 来确定确切的 MIME 类型。
方法详情
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()");
}
UploadedFile 构造函数。
public void __construct ( $config = [] ) | ||
$config | 数组 |
将用于初始化对象属性的名称-值对 |
public function __construct($config = [])
{
$this->_tempResource = ArrayHelper::remove($config, 'tempResource');
parent::__construct($config);
}
定义于: 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);
}
定义于: yii\base\BaseObject::__isset()
检查属性是否已设置,即已定义且不为 null。
不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 isset($object->property)
时会隐式调用。
注意,如果未定义属性,则将返回 false。
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;
}
定义于: 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);
}
}
字符串输出。
这是一个 PHP 魔术方法,返回对象的字符串表示形式。此处的实现返回上传文件的名称。
public string __toString ( ) | ||
返回值 | string |
对象的字符串表示形式 |
---|
public function __toString()
{
return $this->name;
}
定义于: yii\base\BaseObject::__unset()
将对象属性设置为 null。
不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 unset($object->property)
时会隐式调用。
注意,如果未定义属性,则此方法将不执行任何操作。如果属性是只读属性,则会抛出异常。
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);
}
}
定义于: 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);
}
定义于: 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);
}
::class
代替。
定义于: yii\base\BaseObject::className()
返回此类的完全限定名称。
public static string className ( ) | ||
返回值 | string |
此类的完全限定名称。 |
---|
public static function className()
{
return get_called_class();
}
将临时文件复制到指定的文件中
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;
}
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');
}
public string getExtension ( ) | ||
返回值 | string |
文件扩展名 |
---|
public function getExtension()
{
return strtolower(pathinfo($this->name, PATHINFO_EXTENSION));
}
public boolean getHasError ( ) | ||
返回值 | boolean |
上传的文件是否存在错误。检查 $error 以获取详细的错误代码信息。 |
---|
public function getHasError()
{
return $this->error != UPLOAD_ERR_OK;
}
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);
}
根据给定的文件输入名称返回上传的文件。
名称可以是普通字符串或类似数组元素的字符串(例如 '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;
}
返回给定模型属性的所有上传文件。
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);
}
返回对应于指定文件输入名称的上传文件数组。
这主要用于上传多个文件并保存为 '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;
}
定义于: 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);
}
定义于: 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);
}
public void init ( ) |
public function init()
{
}
清理已加载的 UploadedFile 实例。
此方法主要由测试脚本用于设置测试环境。
public static void reset ( ) |
public static function reset()
{
self::$_files = null;
}
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);
}
注册 或 登录 以发表评论。