diff --git a/Classes/GcsStorage.php b/Classes/GcsStorage.php index 56598b3..a5be694 100644 --- a/Classes/GcsStorage.php +++ b/Classes/GcsStorage.php @@ -237,6 +237,14 @@ public function importResourceFromContent($content, $collectionName): Persistent $resource->setSha1($sha1Hash); $resource->setMd5($md5Hash); + if ( + class_exists('\finfo') + && ($finfo = new \finfo(FILEINFO_MIME_TYPE)) + && ($mediaType = $finfo->buffer($content)) + ) { + $resource->setMediaType($mediaType); + } + $this->getCurrentBucket()->upload($content, [ 'name' => $this->keyPrefix . $sha1Hash, 'metadata' => [ @@ -429,6 +437,13 @@ protected function importTemporaryFile(string $temporaryPathAndFilename, string $resource->setSha1($sha1Hash); $resource->setMd5($md5Hash); + if ( + function_exists('mime_content_type') + && $mediaType = mime_content_type($temporaryPathAndFilename) + ) { + $resource->setMediaType($mediaType); + } + $bucket = $this->getCurrentBucket(); if (!$bucket->object($this->keyPrefix . $sha1Hash)->exists()) { try { diff --git a/composer.json b/composer.json index 59df614..1e9aff0 100644 --- a/composer.json +++ b/composer.json @@ -21,6 +21,9 @@ "ext-pdo": "*", "ext-zlib": "*" }, + "suggest": { + "ext-fileinfo": "Needed to set correct MediaType in storage" + }, "autoload": { "psr-4": { "Flownative\\Google\\CloudStorage\\": "Classes"