CUploadedFile


system.web
继承 class CUploadedFile » CComponent
源自 1.0
版本 $Id: CUploadedFile.php 3515 2011-12-28 12:29:24Z mdomba $
源码
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() 如果类中没有调的方法名,则调用这个方法。 CComponent
__construct() Constructor. CUploadedFile
__get() 返回一个属性值、一个事件处理程序列表或一个行为名称。 CComponent
__isset() 检查一个属性是否为null。 CComponent
__set() 设置一个组件的属性值。 CComponent
__toString() String output. 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() Returns an error code describing the status of this file uploading. CUploadedFile
getEventHandlers() 返回一个事件的附加处理程序列表。 CComponent
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. CUploadedFile
getHasError() 返回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 for the specified array name. CUploadedFile
getName() 返回the original name of the file being uploaded CUploadedFile
getSize() 返回the actual size of the uploaded file in bytes CUploadedFile
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. CUploadedFile
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. CUploadedFile
hasEvent() 确定一个事件是否定义。 CComponent
hasEventHandler() 检查事件是否有附加的处理程序。 CComponent
hasProperty() 确定属性是否被定义。 CComponent
raiseEvent() 发起一个事件。 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
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
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
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
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.
public function getExtensionName()
{
    if((
$pos=strrpos($this->_name,'.'))!==false)
        return (string)
substr($this->_name,$pos+1);
    else
        return 
'';
}

getHasError() 方法
public boolean getHasError()
{return} boolean whether there is an error with the uploaded file. Check error for detailed error code information.
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.
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.
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 array 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} array array of CUploadedFile objects. Empty array is returned if no available file was found for the given attribute.
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 array getInstancesByName(string $name)
$name string the name of the array of files
{return} array 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.
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) && self::$_files[$key]->getError()!=UPLOAD_ERR_NO_FILE)
            
$results[] = self::$_files[$key];
    return 
$results;
}

Returns an array of instances for the 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
public function getName()
{
    return 
$this->_name;
}

getSize() 方法
public integer getSize()
{return} integer the actual size of the uploaded file in bytes
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.
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.
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']);
}

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

reset() 方法 (可用自 v1.1.4)
public static void reset()
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
public function saveAs($file,$deleteTempFile=true)
{
    if(
$this->_error==UPLOAD_ERR_OK)
    {
        if(
$deleteTempFile)
            return 
move_uploaded_file($this->_tempName,$file);
        else if(
is_uploaded_file($this->_tempName))
            return 
copy($this->_tempName$file);
        else
            return 
false;
    }
    else
        return 
false;
}

Saves the uploaded file.