system system.base system.caching system.caching.dependencies system.collections system.console system.db system.db.ar system.db.schema system.db.schema.cubrid system.db.schema.mssql system.db.schema.mysql system.db.schema.oci system.db.schema.pgsql system.db.schema.sqlite system.gii system.i18n system.i18n.gettext system.logging system.test system.utils system.validators system.web system.web.actions system.web.auth system.web.filters system.web.form system.web.helpers system.web.renderers system.web.services system.web.widgets system.web.widgets.captcha system.web.widgets.pagers zii.behaviors zii.widgets zii.widgets.grid zii.widgets.jui

CUploadedFile

system.web
继承 class CUploadedFile » CComponent
可用自 1.0
源码 framework/web/CUploadedFile.php
CUploadedFile represents the information for an uploaded file.

Call getInstance to retrieve the instance of an uploaded file, and then use saveAs to save it on the server. You may also query other information about the file, including name, tempName, type, size and error.

公共属性

隐藏继承的属性

属性类型描述被定义在
error integer Returns an error code describing the status of this file uploading. CUploadedFile
extensionName string the file extension name for name. CUploadedFile
hasError boolean whether there is an error with the uploaded file. CUploadedFile
name string the original name of the file being uploaded CUploadedFile
size integer the actual size of the uploaded file in bytes CUploadedFile
tempName string the path of the uploaded file on the server. CUploadedFile
type string the MIME-type of the uploaded file (such as "image/gif"). CUploadedFile

公共方法

隐藏继承的方法

方法描述被定义在
__call() Calls the named method which is not a class method. CComponent
__construct() Constructor. CUploadedFile
__get() Returns a property value, an event handler list or a behavior based on its name. CComponent
__isset() Checks if a property value is null. CComponent
__set() Sets value of a component property. CComponent
__toString() String output. CUploadedFile
__unset() Sets a component property to be null. CComponent
asa() Returns the named behavior object. CComponent
attachBehavior() Attaches a behavior to this component. CComponent
attachBehaviors() Attaches a list of behaviors to the component. CComponent
attachEventHandler() Attaches an event handler to an event. CComponent
canGetProperty() Determines whether a property can be read. CComponent
canSetProperty() Determines whether a property can be set. CComponent
detachBehavior() Detaches a behavior from the component. CComponent
detachBehaviors() Detaches all behaviors from the component. CComponent
detachEventHandler() Detaches an existing event handler. CComponent
disableBehavior() Disables an attached behavior. CComponent
disableBehaviors() Disables all behaviors attached to this component. CComponent
enableBehavior() Enables an attached behavior. CComponent
enableBehaviors() Enables all behaviors attached to this component. CComponent
evaluateExpression() Evaluates a PHP expression or callback under the context of this component. CComponent
getError() Returns an error code describing the status of this file uploading. CUploadedFile
getEventHandlers() Returns the list of attached event handlers for an event. CComponent
getExtensionName() Returns the file extension name for name. The extension name does not include the dot character. An empty string is returned if name does not have an extension name. CUploadedFile
getHasError() Returns whether there is an error with the uploaded file. Check error for detailed error code information. CUploadedFile
getInstance() Returns an instance of the specified uploaded file. CUploadedFile
getInstanceByName() Returns an instance of the specified uploaded file. CUploadedFile
getInstances() Returns all uploaded files for the given model attribute. CUploadedFile
getInstancesByName() Returns an array of instances starting with specified array name. CUploadedFile
getName() Returns the original name of the file being uploaded CUploadedFile
getSize() Returns the actual size of the uploaded file in bytes CUploadedFile
getTempName() Returns the path of the uploaded file on the server. Note, this is a temporary file which will be automatically deleted by PHP after the current request is processed. CUploadedFile
getType() Returns the MIME-type of the uploaded file (such as "image/gif"). Since this MIME type is not checked on the server side, do not take this value for granted. Instead, use CFileHelper::getMimeType to determine the exact MIME type. CUploadedFile
hasEvent() Determines whether an event is defined. CComponent
hasEventHandler() Checks whether the named event has attached handlers. CComponent
hasProperty() Determines whether a property is defined. CComponent
raiseEvent() Raises an event. CComponent
reset() Cleans up the loaded CUploadedFile instances. CUploadedFile
saveAs() Saves the uploaded file. CUploadedFile

受保护的方法

隐藏继承的方法

方法描述被定义在
collectFilesRecursive() Processes incoming files for getInstanceByName. CUploadedFile
prefetchFiles() Initially processes $_FILES superglobal for easier use. CUploadedFile

属性详情

error 属性 只读
public integer getError()

Returns an error code describing the status of this file uploading.

extensionName 属性 只读
public string getExtensionName()

the file extension name for name. The extension name does not include the dot character. An empty string is returned if name does not have an extension name.

hasError 属性 只读
public boolean getHasError()

whether there is an error with the uploaded file. Check error for detailed error code information.

name 属性 只读
public string getName()

the original name of the file being uploaded

size 属性 只读
public integer getSize()

the actual size of the uploaded file in bytes

tempName 属性 只读
public string getTempName()

the path of the uploaded file on the server. Note, this is a temporary file which will be automatically deleted by PHP after the current request is processed.

type 属性 只读
public string getType()

the MIME-type of the uploaded file (such as "image/gif"). Since this MIME type is not checked on the server side, do not take this value for granted. Instead, use CFileHelper::getMimeType to determine the exact MIME type.

方法详情

__construct() 方法
public void __construct(string $name, string $tempName, string $type, integer $size, integer $error)
$name string the original name of the file being uploaded
$tempName string the path of the uploaded file on the server.
$type string the MIME-type of the uploaded file (such as "image/gif").
$size integer the actual size of the uploaded file in bytes
$error integer the error code
源码: framework/web/CUploadedFile.php#164 (显示)
public function __construct($name,$tempName,$type,$size,$error)
{
    
$this->_name=$name;
    
$this->_tempName=$tempName;
    
$this->_type=$type;
    
$this->_size=$size;
    
$this->_error=$error;
}

Constructor. Use getInstance to get an instance of an uploaded file.

__toString() 方法
public string __toString()
{return} string the string representation of the object
源码: framework/web/CUploadedFile.php#179 (显示)
public function __toString()
{
    return 
$this->_name;
}

String output. This is PHP magic method that returns string representation of an object. The implementation here returns the uploaded file's name.

collectFilesRecursive() 方法
protected static void collectFilesRecursive(string $key, mixed $names, mixed $tmp_names, mixed $types, mixed $sizes, mixed $errors)
$key string key for identifiing uploaded file: class name and subarray indexes
$names mixed file names provided by PHP
$tmp_names mixed temporary file names provided by PHP
$types mixed filetypes provided by PHP
$sizes mixed file sizes provided by PHP
$errors mixed uploading issues provided by PHP
源码: framework/web/CUploadedFile.php#144 (显示)
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);
}

Processes incoming files for getInstanceByName.

getError() 方法
public integer getError()
{return} integer the error code
源码: framework/web/CUploadedFile.php#252 (显示)
public function getError()
{
    return 
$this->_error;
}

Returns an error code describing the status of this file uploading.

getExtensionName() 方法
public string getExtensionName()
{return} string the file extension name for name. The extension name does not include the dot character. An empty string is returned if name does not have an extension name.
源码: framework/web/CUploadedFile.php#271 (显示)
public function getExtensionName()
{
    return 
CFileHelper::getExtension($this->_name);
}

getHasError() 方法
public boolean getHasError()
{return} boolean whether there is an error with the uploaded file. Check error for detailed error code information.
源码: framework/web/CUploadedFile.php#261 (显示)
public function getHasError()
{
    return 
$this->_error!=UPLOAD_ERR_OK;
}

getInstance() 方法
public static CUploadedFile getInstance(CModel $model, string $attribute)
$model CModel the model instance
$attribute string the attribute name. For tabular file uploading, this can be in the format of "[$i]attributeName", where $i stands for an integer index.
{return} CUploadedFile the instance of the uploaded file. Null is returned if no file is uploaded for the specified model attribute.
源码: framework/web/CUploadedFile.php#57 (显示)
public static function getInstance($model$attribute)
{
    return 
self::getInstanceByName(CHtml::resolveName($model$attribute));
}

Returns an instance of the specified uploaded file. The file should be uploaded using CHtml::activeFileField.

getInstanceByName() 方法
public static CUploadedFile getInstanceByName(string $name)
$name string the name of the file input field.
{return} CUploadedFile the instance of the uploaded file. Null is returned if no file is uploaded for the specified name.
源码: framework/web/CUploadedFile.php#81 (显示)
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;
}

Returns an instance of the specified uploaded file. The name can be a plain string or a string like an array element (e.g. 'Post[imageFile]', or 'Post[0][imageFile]').

getInstances() 方法
public static CUploadedFile[] getInstances(CModel $model, string $attribute)
$model CModel the model instance
$attribute string the attribute name. For tabular file uploading, this can be in the format of "[$i]attributeName", where $i stands for an integer index.
{return} CUploadedFile[] array of CUploadedFile objects. Empty array is returned if no available file was found for the given attribute.
源码: framework/web/CUploadedFile.php#69 (显示)
public static function getInstances($model$attribute)
{
    return 
self::getInstancesByName(CHtml::resolveName($model$attribute));
}

Returns all uploaded files for the given model attribute.

getInstancesByName() 方法
public static CUploadedFile[] getInstancesByName(string $name)
$name string the name of the array of files
{return} CUploadedFile[] the array of CUploadedFile objects. Empty array is returned if no adequate upload was found. Please note that this array will contain all files from all subarrays regardless how deeply nested they are.
源码: framework/web/CUploadedFile.php#99 (显示)
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;
}

Returns an array of instances starting with specified array name.

If multiple files were uploaded and saved as 'Files[0]', 'Files[1]', 'Files[n]'..., you can have them all by passing 'Files' as array name.

getName() 方法
public string getName()
{return} string the original name of the file being uploaded
源码: framework/web/CUploadedFile.php#214 (显示)
public function getName()
{
    return 
$this->_name;
}

getSize() 方法
public integer getSize()
{return} integer the actual size of the uploaded file in bytes
源码: framework/web/CUploadedFile.php#242 (显示)
public function getSize()
{
    return 
$this->_size;
}

getTempName() 方法
public string getTempName()
{return} string the path of the uploaded file on the server. Note, this is a temporary file which will be automatically deleted by PHP after the current request is processed.
源码: framework/web/CUploadedFile.php#224 (显示)
public function getTempName()
{
    return 
$this->_tempName;
}

getType() 方法
public string getType()
{return} string the MIME-type of the uploaded file (such as "image/gif"). Since this MIME type is not checked on the server side, do not take this value for granted. Instead, use CFileHelper::getMimeType to determine the exact MIME type.
源码: framework/web/CUploadedFile.php#234 (显示)
public function getType()
{
    return 
$this->_type;
}

prefetchFiles() 方法
protected static void prefetchFiles()
源码: framework/web/CUploadedFile.php#126 (显示)
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']);
}

Initially processes $_FILES superglobal for easier use. Only for internal usage.

reset() 方法 (自版本 v1.1.4 可用)
public static void reset()
源码: framework/web/CUploadedFile.php#117 (显示)
public static function reset()
{
    
self::$_files=null;
}

Cleans up the loaded CUploadedFile instances. This method is mainly used by test scripts to set up a fixture.

saveAs() 方法
public boolean saveAs(string $file, boolean $deleteTempFile=true)
$file string the file path used to save the uploaded file
$deleteTempFile boolean whether to delete the temporary file after saving. If true, you will not be able to save the uploaded file again in the current request.
{return} boolean true whether the file is saved successfully

In some exceptional cases such as not enough permissions to write to the path specified PHP warning is triggered.
源码: framework/web/CUploadedFile.php#196 (显示)
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;
}

Saves the uploaded file. Note: this method uses php's move_uploaded_file() method. As such, if the target file ($file) already exists it is overwritten.