/** * Get an item from the storage service. * * @TODO Support streams * * @param string $path * @param array $options * @return string */ public function fetchItem($path, $options = array()) { $fullPath = $this->_getFullPath($path, $options); try { if (!empty($options[self::FETCH_STREAM])) { return $this->_s3->getObjectStream($fullPath, $options[self::FETCH_STREAM]); } else { return $this->_s3->getObject($fullPath); } } catch (Zend_Service_Amazon_S3_Exception $e) { throw new Zend_Cloud_StorageService_Exception('Error on fetch: ' . $e->getMessage(), $e->getCode(), $e); } }
/** * Get object using streaming and specific files * */ public function testGetObjectStreamNamed() { $this->_amazon->createBucket($this->_bucket); $this->_amazon->putObject($this->_bucket . "/zftest", "testdata"); $outfile = tempnam(sys_get_temp_dir(), "output"); $response = $this->_amazon->getObjectStream($this->_bucket . "/zftest", $outfile); $this->assertTrue($response instanceof Response\Stream, 'The test did not return stream response'); $this->assertTrue(is_resource($response->getStream()), 'Request does not contain stream!'); $this->assertEquals($outfile, $response->getStreamName()); $stream_read = stream_get_contents($response->getStream()); $file_read = file_get_contents($outfile); $this->assertEquals("testdata", $stream_read, 'Downloaded stream does not seem to match!'); $this->assertEquals("testdata", $file_read, 'Downloaded file does not seem to match!'); }