CUploadedFile
| Пакет | system.web |
|---|---|
| Наследование | class CUploadedFile » CComponent |
| С момента | 1.0 |
| Исходный код | framework/web/CUploadedFile.php |
Вызовите getInstance, чтобы получить экземпляр загруженного файла, а затем используйте saveAs, чтобы сохранить его на сервере. Вы также можете получить другую информацию о файле, включая имя, временное имя, тип, размер и ошибку.
Свойства public
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| error | целое число | Возвращает код ошибки, описывающий состояние загрузки этого файла. | CUploadedFile |
| extensionName | строка | имя расширения файла для имени. | CUploadedFile |
| hasError | булево | указывает, есть ли ошибка с загруженным файлом. | CUploadedFile |
| name | строка | исходное имя загружаемого файла | CUploadedFile |
| size | целое число | фактический размер загруженного файла в байтах | CUploadedFile |
| tempName | строка | путь к загруженному файлу на сервере. | CUploadedFile |
| type | строка | тип MIME загруженного файла (например, "image/gif"). | CUploadedFile |
Методы public
| Метод | Описание | Определено |
|---|---|---|
| __call() | Вызывает метод с указанным именем, который не является методом класса. | CComponent |
| __construct() | Конструктор. | CUploadedFile |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства null. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __toString() | Вывод в виде строки. | CUploadedFile |
| __unset() | Устанавливает свойство компонента в null. | CComponent |
| asa() | Возвращает объект поведения с указанным именем. | CComponent |
| attachBehavior() | Присоединяет поведение к этому компоненту. | CComponent |
| attachBehaviors() | Присоединяет список поведений к компоненту. | CComponent |
| attachEventHandler() | Присоединяет обработчик события к событию. | CComponent |
| canGetProperty() | Определяет, можно ли прочитать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик события. | CComponent |
| disableBehavior() | Отключает присоединенное поведение. | CComponent |
| disableBehaviors() | Отключает все присоединенные поведения к этому компоненту. | CComponent |
| enableBehavior() | Включает присоединенное поведение. | CComponent |
| enableBehaviors() | Включает все присоединенные поведения к этому компоненту. | CComponent |
| evaluateExpression() | Вычисляет выражение PHP или обратный вызов в контексте этого компонента. | CComponent |
| getError() | Возвращает код ошибки, описывающий состояние загрузки этого файла. | CUploadedFile |
| getEventHandlers() | Возвращает список присоединенных обработчиков событий для события. | CComponent |
| getExtensionName() | Возвращает имя расширения файла для имени. Имя расширения не включает символ точки. Возвращается пустая строка, если у имени нет имени расширения. | CUploadedFile |
| getHasError() | Возвращает, есть ли ошибка с загруженным файлом. Проверьте error для получения подробной информации об коде ошибки. | CUploadedFile |
| getInstance() | Возвращает экземпляр указанного загруженного файла. | CUploadedFile |
| getInstanceByName() | Возвращает экземпляр указанного загруженного файла. | CUploadedFile |
| getInstances() | Возвращает все загруженные файлы для заданного атрибута модели. | CUploadedFile |
| getInstancesByName() | Возвращает массив экземпляров, начинающихся с указанного имени массива. | CUploadedFile |
| getName() | Возвращает исходное имя загружаемого файла. | CUploadedFile |
| getSize() | Возвращает фактический размер загруженного файла в байтах. | CUploadedFile |
| getTempName() | Возвращает путь к загруженному файлу на сервере. Обратите внимание, что это временный файл, который будет автоматически удален PHP после обработки текущего запроса. | CUploadedFile |
| getType() | Возвращает тип MIME загруженного файла (например, "image/gif"). Поскольку этот тип MIME не проверяется на стороне сервера, не принимайте это значение как должное. Вместо этого используйте CFileHelper::getMimeType, чтобы определить точный тип MIME. | CUploadedFile |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли присоединенные обработчики для события с заданным именем. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| raiseEvent() | Вызывает событие. | CComponent |
| reset() | Очищает загруженные экземпляры CUploadedFile. | CUploadedFile |
| saveAs() | Сохраняет загруженный файл. | CUploadedFile |
Защищённые методы
| Метод | Описание | Определён в |
|---|---|---|
| collectFilesRecursive() | Обрабатывает входящие файлы для getInstanceByName. | CUploadedFile |
| prefetchFiles() | Изначально обрабатывает суперглобальную переменную $_FILES для более удобного использования. | CUploadedFile |
Подробное описание свойств
error свойство только для чтения
public integer getError()
Возвращает код ошибки, описывающий состояние загрузки этого файла.
extensionName свойство только для чтения
public string getExtensionName()
Имя расширения файла для name. Имя расширения не включает символ точки. Возвращается пустая строка, если у name нет имени расширения.
hasError свойство только для чтения
public boolean getHasError()
Указывает, есть ли ошибка с загруженным файлом. Проверьте error для получения подробной информации об коде ошибки.
name свойство только для чтения
public string getName()
Исходное имя загружаемого файла
size свойство только для чтения
public integer getSize()
Фактический размер загруженного файла в байтах
tempName свойство только для чтения
public string getTempName()
Путь к загруженному файлу на сервере. Обратите внимание, что это временный файл, который будет автоматически удалён PHP после обработки текущего запроса.
type свойство только для чтения
public string getType()
MIME-тип загруженного файла (например, "image/gif"). Поскольку этот MIME-тип не проверяется на стороне сервера, не полагайтесь на это значение. Вместо этого используйте CFileHelper::getMimeType для определения точного MIME-типа.
Подробное описание методов
__construct() метод
public void __construct(string $name, string $tempName, string $type, integer $size, integer $error) | ||
| $name | string | Исходное имя загружаемого файла |
| $tempName | string | Путь к загруженному файлу на сервере. |
| $type | string | MIME-тип загруженного файла (например, "image/gif"). |
| $size | integer | Фактический размер загруженного файла в байтах |
| $error | integer | Код ошибки |
public function __construct($name,$tempName,$type,$size,$error)
{
$this->_name=$name;
$this->_tempName=$tempName;
$this->_type=$type;
$this->_size=$size;
$this->_error=$error;
}
Конструктор. Используйте getInstance для получения экземпляра загруженного файла.
__toString() метод
public string __toString() | ||
| {return} | string | Строковое представление объекта |
public function __toString()
{
return $this->_name;
}
Вывод в строковом формате. Это магический метод PHP, который возвращает строковое представление объекта. Здесь реализация возвращает имя загруженного файла.
collectFilesRecursive() метод
protected static void collectFilesRecursive(string $key, mixed $names, mixed $tmp_names, mixed $types, mixed $sizes, mixed $errors) | ||
| $key | string | ключ для идентификации загруженного файла: имя класса и индексы подмассива |
| $names | mixed | имена файлов, предоставленные PHP |
| $tmp_names | mixed | временные имена файлов, предоставленные PHP |
| $types | mixed | типы файлов, предоставленные PHP |
| $sizes | mixed | размеры файлов, предоставленные PHP |
| $errors | mixed | ошибки загрузки, предоставленные PHP |
protected static function collectFilesRecursive($key, $names, $tmp_names, $types, $sizes, $errors)
{
if(is_array($names))
{
foreach($names as $item=>$name)
self::collectFilesRecursive($key.'['.$item.']', $names[$item], $tmp_names[$item], $types[$item], $sizes[$item], $errors[$item]);
}
else
self::$_files[$key] = new CUploadedFile($names, $tmp_names, $types, $sizes, $errors);
}
Обрабатывает входящие файлы для getInstanceByName.
getError() метод
public integer getError() | ||
| {return} | integer | Код ошибки |
public function getError()
{
return $this->_error;
}
Возвращает код ошибки, описывающий состояние загрузки этого файла.
getExtensionName() метод
public string getExtensionName() | ||
| {return} | string | Имя расширения файла для name. Имя расширения не включает символ точки. Возвращается пустая строка, если у name нет имени расширения. |
public function getExtensionName()
{
return CFileHelper::getExtension($this->_name);
}
getHasError() метод
public boolean getHasError() | ||
| {return} | boolean | Указывает, есть ли ошибка с загруженным файлом. Проверьте error для получения подробной информации об коде ошибки. |
public function getHasError()
{
return $this->_error!=UPLOAD_ERR_OK;
}
getInstance() метод
public static CUploadedFile getInstance(CModel $model, string $attribute) | ||
| $model | CModel | экземпляр модели |
| $attribute | string | имя атрибута. Для табличной загрузки файлов это может быть в формате "[$i]имяАтрибута", где $i обозначает целочисленный индекс. |
| {return} | CUploadedFile | экземпляр загруженного файла. Возвращает Null, если для указанного атрибута модели файл не загружен. |
public static function getInstance($model, $attribute)
{
return self::getInstanceByName(CHtml::resolveName($model, $attribute));
}
Возвращает экземпляр указанного загруженного файла. Файл должен быть загружен с помощью CHtml::activeFileField.
См. также
getInstanceByName() метод
public static CUploadedFile getInstanceByName(string $name) | ||
| $name | string | имя поля ввода файла. |
| {return} | CUploadedFile | экземпляр загруженного файла. Возвращает Null, если для указанного имени файл не загружен. |
public static function getInstanceByName($name)
{
if(null===self::$_files)
self::prefetchFiles();
return isset(self::$_files[$name]) && self::$_files[$name]->getError()!=UPLOAD_ERR_NO_FILE ? self::$_files[$name] : null;
}
Возвращает экземпляр указанного загруженного файла. Имя может быть обычной строкой или строкой, похожей на элемент массива (например, 'Post[imageFile]', или 'Post[0][imageFile]').
getInstances() метод
public static CUploadedFile[] getInstances(CModel $model, string $attribute) | ||
| $model | CModel | экземпляр модели |
| $attribute | строка | имя атрибута. Для загрузки табличных файлов это может быть в формате "[$i]имяАтрибута", где $i - целочисленный индекс. |
| {return} | CUploadedFile[] | массив объектов CUploadedFile. Пустой массив возвращается, если для данного атрибута не найдено доступного файла. |
public static function getInstances($model, $attribute)
{
return self::getInstancesByName(CHtml::resolveName($model, $attribute));
}
Возвращает все загруженные файлы для заданного атрибута модели.
getInstancesByName() метод
public static CUploadedFile[] getInstancesByName(string $name) | ||
| $name | строка | имя массива файлов |
| {return} | CUploadedFile[] | массив объектов CUploadedFile. Пустой массив возвращается, если не найдено подходящей загрузки. Обратите внимание, что этот массив будет содержать все файлы из всех подмассивов, независимо от их вложенности. |
public static function getInstancesByName($name)
{
if(null===self::$_files)
self::prefetchFiles();
$len=strlen($name);
$results=array();
foreach(array_keys(self::$_files) as $key)
if(0===strncmp($key, $name.'[', $len+1) && self::$_files[$key]->getError()!=UPLOAD_ERR_NO_FILE)
$results[] = self::$_files[$key];
return $results;
}
Возвращает массив экземпляров, начиная с указанного имени массива.
Если было загружено и сохранено несколько файлов как 'Files[0]', 'Files[1]', 'Files[n]'..., вы можете получить их все, передав 'Files' в качестве имени массива.
getName() метод
public string getName() | ||
| {return} | строка | исходное имя загружаемого файла |
public function getName()
{
return $this->_name;
}
getSize() метод
public integer getSize() | ||
| {return} | целое число | фактический размер загруженного файла в байтах |
public function getSize()
{
return $this->_size;
}
getTempName() метод
public string getTempName() | ||
| {return} | строка | путь к загруженному файлу на сервере. Обратите внимание, что это временный файл, который будет автоматически удален PHP после обработки текущего запроса. |
public function getTempName()
{
return $this->_tempName;
}
getType() метод
public string getType() | ||
| {return} | строка | MIME-тип загруженного файла (например, "image/gif"). Поскольку этот MIME-тип не проверяется на стороне сервера, не полагайтесь на это значение. Вместо этого используйте CFileHelper::getMimeType для определения точного MIME-типа. |
public function getType()
{
return $this->_type;
}
prefetchFiles() метод
protected static void prefetchFiles() |
protected static function prefetchFiles()
{
self::$_files = array();
if(!isset($_FILES) || !is_array($_FILES))
return;
foreach($_FILES as $class=>$info)
self::collectFilesRecursive($class, $info['name'], $info['tmp_name'], $info['type'], $info['size'], $info['error']);
}
Изначально обрабатывает суперглобальную переменную $_FILES для более удобного использования. Только для внутреннего использования.
reset() метод (доступен с версии 1.1.4)
public static void reset() |
public static function reset()
{
self::$_files=null;
}
Очищает загруженные экземпляры CUploadedFile. Этот метод в основном используется скриптами тестов для подготовки фикстуры.
saveAs() метод
public boolean saveAs(string $file, boolean $deleteTempFile=true) | ||
| $file | строка | путь к файлу, используемому для сохранения загруженного файла |
| $deleteTempFile | логическое значение | удалять ли временный файл после сохранения. Если true, вы не сможете сохранить загруженный файл повторно в текущем запросе. |
| {return} | логическое значение | true, если файл успешно сохранён. В некоторых исключительных случаях, например, при недостаточных правах доступа для записи в указанный путь, генерируется предупреждение PHP. |
public function saveAs($file,$deleteTempFile=true)
{
if($this->_error==UPLOAD_ERR_OK)
{
if($deleteTempFile)
return move_uploaded_file($this->_tempName,$file);
elseif(is_uploaded_file($this->_tempName))
return copy($this->_tempName, $file);
else
return false;
}
else
return false;
}
Сохраняет загруженный файл. Примечание: этот метод использует метод move_uploaded_file() php. Таким образом, если целевой файл ($file) уже существует, он перезаписывается.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CUploadedFile