/** * Imports the given temporary file into the storage and creates the new resource object. * * @param string $temporaryPathAndFilename Path and filename leading to the temporary file * @param string $collectionName Name of the collection to import into * @return Resource The imported resource */ protected function importTemporaryFile($temporaryPathAndFilename, $collectionName) { $sha1Hash = sha1_file($temporaryPathAndFilename); $md5Hash = md5_file($temporaryPathAndFilename); $resource = new Resource(); $resource->setFileSize(filesize($temporaryPathAndFilename)); $resource->setCollectionName($collectionName); $resource->setSha1($sha1Hash); $resource->setMd5($md5Hash); $objectName = $this->keyPrefix . $sha1Hash; $options = array('Bucket' => $this->bucketName, 'Body' => fopen($temporaryPathAndFilename, 'rb'), 'ContentLength' => $resource->getFileSize(), 'ContentType' => $resource->getMediaType(), 'Key' => $objectName); if (!$this->s3Client->doesObjectExist($this->bucketName, $this->keyPrefix . $sha1Hash)) { $this->s3Client->putObject($options); $this->systemLogger->log(sprintf('Successfully imported resource as object "%s" into bucket "%s" with MD5 hash "%s"', $objectName, $this->bucketName, $resource->getMd5() ?: 'unknown'), LOG_INFO); } else { $this->systemLogger->log(sprintf('Did not import resource as object "%s" into bucket "%s" because that object already existed.', $objectName, $this->bucketName), LOG_INFO); } return $resource; }
/** * {@inheritDoc} */ public function getFileSize() { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getFileSize', array()); return parent::getFileSize(); }