Class yii\mongodb\file\Upload

Inheritanceyii\mongodb\file\Upload » yii\base\BaseObject
Implementsyii\base\Configurable
Available since version2.1
Source Code https://github.com/yiisoft/yii2-mongodb/blob/master/file/Upload.php

Upload represents the GridFS upload operation.

An Upload object is usually created by calling yii\mongodb\file\Collection::createUpload().

Note: instance of this class is 'single use' only. Do not attempt to use same Upload instance for multiple file upload.

Usage example:

$document = Yii::$app->mongodb->getFileCollection()->createUpload()
    ->addContent('Part 1')
    ->addContent('Part 2')
    // ...
    ->complete();

Public Properties

Hide inherited properties

Property Type Description Defined By
$chunkCount integer File chunk counts. yii\mongodb\file\Upload
$chunkSize integer Chunk size in bytes. yii\mongodb\file\Upload
$collection yii\mongodb\file\Collection File collection to be used. yii\mongodb\file\Upload
$document array Additional file document contents. yii\mongodb\file\Upload
$filename string Filename to be used for file storage. yii\mongodb\file\Upload
$length integer Total upload length in bytes. yii\mongodb\file\Upload

Public Methods

Hide inherited methods

Method Description Defined By
__call() Calls the named method which is not a class method. yii\base\BaseObject
__construct() Constructor. yii\base\BaseObject
__destruct() Destructor. yii\mongodb\file\Upload
__get() Returns the value of an object property. yii\base\BaseObject
__isset() Checks if a property is set, i.e. defined and not null. yii\base\BaseObject
__set() Sets value of an object property. yii\base\BaseObject
__unset() Sets an object property to null. yii\base\BaseObject
addContent() Adds string content to the upload. yii\mongodb\file\Upload
addFile() Adds a file content to the upload. yii\mongodb\file\Upload
addStream() Adds stream content to the upload. yii\mongodb\file\Upload
canGetProperty() Returns a value indicating whether a property can be read. yii\base\BaseObject
canSetProperty() Returns a value indicating whether a property can be set. yii\base\BaseObject
cancel() Cancels the upload. yii\mongodb\file\Upload
className() Returns the fully qualified name of this class. yii\base\BaseObject
complete() Completes upload. yii\mongodb\file\Upload
hasMethod() Returns a value indicating whether a method is defined. yii\base\BaseObject
hasProperty() Returns a value indicating whether a property is defined. yii\base\BaseObject
init() Initializes the object. yii\mongodb\file\Upload

Property Details

Hide inherited properties

$chunkCount public property

File chunk counts.

public integer $chunkCount 0
$chunkSize public property

Chunk size in bytes.

public integer $chunkSize 261120
$collection public property

File collection to be used.

$document public property

Additional file document contents. Common GridFS columns:

  • metadata: array, additional data associated with the file.
  • aliases: array, an array of aliases.
  • contentType: string, content type to be stored with the file.
public array $document = []
$filename public property

Filename to be used for file storage.

public string $filename null
$length public property

Total upload length in bytes.

public integer $length 0

Method Details

Hide inherited methods

__call() public method

Defined in: yii\base\BaseObject::__call()

Calls the named method which is not a class method.

Do not call this method directly as it is a PHP magic method that will be implicitly called when an unknown method is being invoked.

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

The method name

$params array

Method parameters

return mixed

The method return value

throws yii\base\UnknownMethodException

when calling unknown method

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

            
__construct() public method

Defined in: yii\base\BaseObject::__construct()

Constructor.

The default implementation does two things:

  • Initializes the object with the given configuration $config.
  • Call init().

If this method is overridden in a child class, it is recommended that

  • the last parameter of the constructor is a configuration array, like $config here.
  • call the parent implementation at the end of the constructor.
public void __construct ( $config = [] )
$config array

Name-value pairs that will be used to initialize the object properties

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__destruct() public method

Destructor.

Makes sure abandoned upload is cancelled.

public void __destruct ( )

                public function __destruct()
{
    if (!$this->_isComplete) {
        $this->cancel();
    }
}

            
__get() public method

Defined in: yii\base\BaseObject::__get()

Returns the value of an object property.

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing $value = $object->property;.

See also __set().

public mixed __get ( $name )
$name string

The property name

return mixed

The property value

throws yii\base\UnknownPropertyException

if the property is not defined

throws yii\base\InvalidCallException

if the property is write-only

                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() public method

Defined in: yii\base\BaseObject::__isset()

Checks if a property is set, i.e. defined and not null.

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing isset($object->property).

Note that if the property is not defined, false will be returned.

See also https://www.php.net/manual/en/function.isset.php.

public boolean __isset ( $name )
$name string

The property name or the event name

return boolean

Whether the named property is set (not null).

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

            
__set() public method

Defined in: yii\base\BaseObject::__set()

Sets value of an object property.

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing $object->property = $value;.

See also __get().

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

The property name or the event name

$value mixed

The property value

throws yii\base\UnknownPropertyException

if the property is not defined

throws yii\base\InvalidCallException

if the property is read-only

                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);
    }
}

            
__unset() public method

Defined in: yii\base\BaseObject::__unset()

Sets an object property to null.

Do not call this method directly as it is a PHP magic method that will be implicitly called when executing unset($object->property).

Note that if the property is not defined, this method will do nothing. If the property is read-only, it will throw an exception.

See also https://www.php.net/manual/en/function.unset.php.

public void __unset ( $name )
$name string

The property name

throws yii\base\InvalidCallException

if the property is read only.

                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);
    }
}

            
addContent() public method

Adds string content to the upload.

This method can invoked several times before complete() is called.

public $this addContent ( $content )
$content string

Binary content.

return $this

Self reference.

                public function addContent($content)
{
    $freeBufferLength = $this->chunkSize - StringHelper::byteLength($this->_buffer);
    $contentLength = StringHelper::byteLength($content);
    if ($contentLength > $freeBufferLength) {
        $this->_buffer .= StringHelper::byteSubstr($content, 0, $freeBufferLength);
        $this->flushBuffer(true);
        return $this->addContent(StringHelper::byteSubstr($content, $freeBufferLength));
    } else {
        $this->_buffer .= $content;
        $this->flushBuffer();
    }
    return $this;
}

            
addFile() public method

Adds a file content to the upload.

This method can invoked several times before complete() is called.

public $this addFile ( $filename )
$filename string

Source file name.

return $this

Self reference.

                public function addFile($filename)
{
    if ($this->filename === null) {
        $this->filename = basename($filename);
    }
    $stream = fopen($filename, 'r');
    if ($stream === false) {
        throw new InvalidParamException("Unable to read file '{$filename}'");
    }
    return $this->addStream($stream);
}

            
addStream() public method

Adds stream content to the upload.

This method can invoked several times before complete() is called.

public $this addStream ( $stream )
$stream resource

Data source stream.

return $this

Self reference.

                public function addStream($stream)
{
    while (!feof($stream)) {
        $freeBufferLength = $this->chunkSize - StringHelper::byteLength($this->_buffer);
        $streamChunk = fread($stream, $freeBufferLength);
        if ($streamChunk === false) {
            break;
        }
        $this->_buffer .= $streamChunk;
        $this->flushBuffer();
    }
    return $this;
}

            
canGetProperty() public method

Defined in: yii\base\BaseObject::canGetProperty()

Returns a value indicating whether a property can be read.

A property is readable if:

  • the class has a getter method associated with the specified name (in this case, property name is case-insensitive);
  • the class has a member variable with the specified name (when $checkVars is true);

See also canSetProperty().

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

The property name

$checkVars boolean

Whether to treat member variables as properties

return boolean

Whether the property can be read

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

            
canSetProperty() public method

Defined in: yii\base\BaseObject::canSetProperty()

Returns a value indicating whether a property can be set.

A property is writable if:

  • the class has a setter method associated with the specified name (in this case, property name is case-insensitive);
  • the class has a member variable with the specified name (when $checkVars is true);

See also canGetProperty().

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

The property name

$checkVars boolean

Whether to treat member variables as properties

return boolean

Whether the property can be written

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

            
cancel() public method

Cancels the upload.

public void cancel ( )

                public function cancel()
{
    $this->_buffer = null;
    $this->collection->getChunkCollection()->remove(['files_id' => $this->_documentId], ['limit' => 0]);
    $this->collection->remove(['_id' => $this->_documentId], ['limit' => 1]);
    $this->_isComplete = true;
}

            
className() public static method
Deprecated since 2.0.14. On PHP >=5.5, use ::class instead.

Defined in: yii\base\BaseObject::className()

Returns the fully qualified name of this class.

public static string className ( )
return string

The fully qualified name of this class.

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

            
complete() public method

Completes upload.

public array complete ( )
return array

Saved document.

                public function complete()
{
    $this->flushBuffer(true);
    $document = $this->insertFile();
    $this->_isComplete = true;
    return $document;
}

            
hasMethod() public method

Defined in: yii\base\BaseObject::hasMethod()

Returns a value indicating whether a method is defined.

The default implementation is a call to php function method_exists(). You may override this method when you implemented the php magic method __call().

public boolean hasMethod ( $name )
$name string

The method name

return boolean

Whether the method is defined

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

            
hasProperty() public method

Defined in: yii\base\BaseObject::hasProperty()

Returns a value indicating whether a property is defined.

A property is defined if:

  • the class has a getter or setter method associated with the specified name (in this case, property name is case-insensitive);
  • the class has a member variable with the specified name (when $checkVars is true);

See also:

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

The property name

$checkVars boolean

Whether to treat member variables as properties

return boolean

Whether the property is defined

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

            
init() public method

Initializes the object.

This method is invoked at the end of the constructor after the object is initialized with the given configuration.

public void init ( )

                public function init()
{
    $this->_hashContext = hash_init('md5');
    if (isset($this->document['_id'])) {
        if ($this->document['_id'] instanceof ObjectID) {
            $this->_documentId = $this->document['_id'];
        } else {
            try {
                $this->_documentId = new ObjectID($this->document['_id']);
            } catch (InvalidArgumentException $e) {
                // invalid id format
                $this->_documentId = $this->document['_id'];
            }
        }
    } else {
        $this->_documentId = new ObjectID();
    }
    $this->collection->ensureIndexes();
}