diff --git a/SpacesAPI/Space.php b/SpacesAPI/Space.php index cffcbde..a257062 100644 --- a/SpacesAPI/Space.php +++ b/SpacesAPI/Space.php @@ -303,15 +303,19 @@ class Space * * @param string $filepath The path to the file, including the filename. Relative and absolute paths are accepted. * @param string|null $filename The remote filename. If `null`, the local filename will be used. + * @param string|null $mimeType The file mime type to pass as ContentType for the file (e.g. 'image/jpeg'). + * @param bool $private True for the file to be private, false to allow public access. * * @return \SpacesAPI\File */ - public function uploadFile(string $filepath, ?string $filename = null): File + public function uploadFile(string $filepath, ?string $filename = null, ?string $mimeType = null, bool $private = true): File { $this->s3->putObject([ 'Bucket' => $this->name, 'Key' => ($filename) ?: basename($filepath), 'SourceFile' => $filepath, + 'ContentType' => $mimeType, + 'ACL' => ($private) ? 'private' : 'public-read' ]); return new File($this, ($filename) ?: basename($filepath), [], false); diff --git a/tests/SpaceTest.php b/tests/SpaceTest.php index f416539..976d9f6 100644 --- a/tests/SpaceTest.php +++ b/tests/SpaceTest.php @@ -86,6 +86,13 @@ class SpaceTest extends TestCase $this->assertInstanceOf(File::class, $file); } + public function testCanUploadFileWithMimeType() + { + $tmpFile = tempnam(sys_get_temp_dir(), 'spaces-test'); + $file = self::$space->uploadFile($tmpFile, 'upload-test.txt', 'text/plain'); + $this->assertInstanceOf(File::class, $file); + } + /** * @depends testCanUploadText * @depends testCanUploadFile