diff --git a/apps/files_external/lib/amazons3.php b/apps/files_external/lib/amazons3.php index 7ff17f0e98a3f371d7a0d823f931966fe54af6bb..10fc626c5da5106919d4d8eecf88d6ba1e449c0f 100644 --- a/apps/files_external/lib/amazons3.php +++ b/apps/files_external/lib/amazons3.php @@ -72,6 +72,12 @@ class AmazonS3 extends \OC\Files\Storage\Common { sleep($this->timeout); } } + private function cleanKey($path) { + if ($path === '.') { + return '/'; + } + return $path; + } public function __construct($params) { if (!isset($params['key']) || !isset($params['secret']) || !isset($params['bucket'])) { @@ -118,11 +124,10 @@ class AmazonS3 extends \OC\Files\Storage\Common { throw new \Exception("Creation of bucket failed."); } } - if (!$this->file_exists('.')) { $result = $this->connection->putObject(array( 'Bucket' => $this->bucket, - 'Key' => '.', + 'Key' => $this->cleanKey('.'), 'Body' => '', 'ContentType' => 'httpd/unix-directory', 'ContentLength' => 0 @@ -167,7 +172,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { try { $result = $this->connection->doesObjectExist( $this->bucket, - $path + $this->cleanKey($path) ); } catch (S3Exception $e) { \OCP\Util::writeLog('files_external', $e->getMessage(), \OCP\Util::ERROR); @@ -261,7 +266,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { $result = $this->connection->headObject(array( 'Bucket' => $this->bucket, - 'Key' => $path + 'Key' => $this->cleanKey($path) )); $stat = array(); @@ -291,8 +296,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { if ($path != '.') { $path .= '/'; } - - if ($this->connection->doesObjectExist($this->bucket, $path)) { + if ($this->connection->doesObjectExist($this->bucket, $this->cleanKey($path))) { return 'dir'; } } catch (S3Exception $e) { @@ -309,7 +313,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { try { $result = $this->connection->deleteObject(array( 'Bucket' => $this->bucket, - 'Key' => $path + 'Key' => $this->cleanKey($path) )); $this->testTimeout(); } catch (S3Exception $e) { @@ -332,7 +336,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { try { $result = $this->connection->getObject(array( 'Bucket' => $this->bucket, - 'Key' => $path, + 'Key' => $this->cleanKey($path), 'SaveAs' => $tmpFile )); } catch (S3Exception $e) { @@ -380,7 +384,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { try { $result = $this->connection->headObject(array( 'Bucket' => $this->bucket, - 'Key' => $path + 'Key' => $this->cleanKey($path) )); } catch (S3Exception $e) { \OCP\Util::writeLog('files_external', $e->getMessage(), \OCP\Util::ERROR); @@ -407,7 +411,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { } $result = $this->connection->copyObject(array( 'Bucket' => $this->bucket, - 'Key' => $path, + 'Key' => $this->cleanKey($path), 'Metadata' => $metadata, 'CopySource' => $this->bucket . '/' . $path )); @@ -415,7 +419,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { } else { $result = $this->connection->putObject(array( 'Bucket' => $this->bucket, - 'Key' => $path, + 'Key' => $this->cleanKey($path), 'Metadata' => $metadata )); $this->testTimeout(); @@ -436,7 +440,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { try { $result = $this->connection->copyObject(array( 'Bucket' => $this->bucket, - 'Key' => $path2, + 'Key' => $this->cleanKey($path2), 'CopySource' => $this->bucket . '/' . $path1 )); $this->testTimeout(); @@ -535,7 +539,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { try { $result= $this->connection->putObject(array( 'Bucket' => $this->bucket, - 'Key' => self::$tmpFiles[$tmpFile], + 'Key' => $this->cleanKey(self::$tmpFiles[$tmpFile]), 'SourceFile' => $tmpFile, 'ContentType' => \OC_Helper::getMimeType($tmpFile), 'ContentLength' => filesize($tmpFile)