Class yii\mongodb\file\Upload
Inheritance | yii\mongodb\file\Upload » yii\base\BaseObject |
---|---|
Implements | yii\base\Configurable |
Available since version | 2.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
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
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
File collection to be used.
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.
Method Details
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()");
}
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();
}
Destructor.
Makes sure abandoned upload is cancelled.
public void __destruct ( ) |
public function __destruct()
{
if (!$this->_isComplete) {
$this->cancel();
}
}
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);
}
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.
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;
}
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);
}
}
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.
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);
}
}
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;
}
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);
}
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;
}
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);
}
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);
}
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;
}
::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();
}
Completes upload.
public array complete ( ) | ||
return | array |
Saved document. |
---|
public function complete()
{
$this->flushBuffer(true);
$document = $this->insertFile();
$this->_isComplete = true;
return $document;
}
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);
}
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);
}
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();
}