/** * Send a request to Amazon S3 to initiate a multipart upload * * @param string $bucket * @param string $key * @param array $options * @return string */ public function createMultipart($bucket, $key, array $options = array()) { $response = $this->s3->createMultipartUpload($options + array('Bucket' => $bucket, 'Key' => $key)); $multipart_id = $response->getPath('UploadId'); $this->key_storage->put($multipart_id, array($bucket, $key)); return $multipart_id; }
/** * @depends testPutObjectsWithUtf8Keys */ public function testMultipartUploads() { $this->log('Initiating an upload'); $result = $this->client->createMultipartUpload(array('Bucket' => $this->bucket, 'Key' => 'big', 'Metadata' => array('foo' => 'bar'))); $this->assertNotEmpty($result['UploadId']); $this->assertNotEmpty($result['Key']); $this->assertNotEmpty($result['Bucket']); $uploadId = $result['UploadId']; sleep(1); $this->log('Getting uploads'); $command = $this->client->getCommand('ListMultipartUploads', array('Bucket' => $this->bucket, 'Key' => 'big', 'UploadId' => $uploadId)); $result = $command->execute(); $this->assertEquals($this->bucket, $result['Bucket']); $this->assertInternalType('array', $result['Uploads']); $this->assertSame(false, $result['IsTruncated']); $this->log('Aborting the upload'); $command = $this->client->getCommand('AbortMultipartUpload', array('Bucket' => $this->bucket, 'Key' => 'big', 'UploadId' => $uploadId)); $result = $command->execute(); $this->assertEquals(array('RequestId'), array_keys($result->toArray())); }
/** * createMultipartUpload * * @param array $params * * @return \Guzzle\Service\Resource\Model */ public function createMultipartUpload(array $params = array()) { $params['Bucket'] = $this->name; return $this->client->createMultipartUpload($params); }