/** * Copy an item in the storage service to a given path. * * WARNING: This operation is *very* expensive for services that do not * support copying an item natively. * * @TODO Support streams for those services that don't support natively * * @param string $sourcePath * @param string $destination path * @param array $options * @return void */ public function copyItem($sourcePath, $destinationPath, $options = array()) { try { $fullSourcePath = $this->_getFullPath($sourcePath, $options); $fullDestPath = $this->_getFullPath($destinationPath, $options); return $this->_s3->copyObject($fullSourcePath, $fullDestPath, empty($options[self::METADATA]) ? null : $options[self::METADATA]); } catch (Zend_Service_Amazon_S3_Exception $e) { throw new Zend_Cloud_StorageService_Exception('Error on copy: ' . $e->getMessage(), $e->getCode(), $e); } }
/** * @depends testCreateBucket * @depends testCreateObject */ public function testCopyObject() { $this->_amazon->createBucket($this->_bucket); $data = "testdata"; $this->_amazon->putObject($this->_bucket . "/zftest", $data); $info1 = $this->_amazon->getInfo($this->_bucket . "/zftest"); $this->_amazon->copyObject($this->_bucket . "/zftest", $this->_bucket . "/zftest2"); $this->assertTrue($this->_amazon->isObjectAvailable($this->_bucket . "/zftest")); $this->assertTrue($this->_amazon->isObjectAvailable($this->_bucket . "/zftest2")); $info2 = $this->_amazon->getInfo($this->_bucket . "/zftest2"); $this->assertEquals($info1['etag'], $info2['etag']); }