diff --git a/src/Controllers/PostController.php b/src/Controllers/PostController.php
index d2b59409..4980c2d9 100644
--- a/src/Controllers/PostController.php
+++ b/src/Controllers/PostController.php
@@ -501,14 +501,11 @@ class PostController
if (!is_readable($path))
throw new SimpleException('Post file is not readable');
- $ext = substr($post->origName, strrpos($post->origName, '.') + 1);
- if (strpos($post->origName, '.') === false)
- $ext = 'dat';
$fn = sprintf('%s_%s_%s.%s',
$this->config->main->title,
$post->id,
join(',', array_map(function($tag) { return $tag->name; }, $post->getTags())),
- $ext);
+ TextHelper::resolveMimeType($post->mimeType) ?: 'dat');
$fn = preg_replace('/[[:^print:]]/', '', $fn);
$ttl = 60 * 60 * 24 * 14;
diff --git a/src/Helpers/TextHelper.php b/src/Helpers/TextHelper.php
index 3796f4ea..0b805072 100644
--- a/src/Helpers/TextHelper.php
+++ b/src/Helpers/TextHelper.php
@@ -328,4 +328,16 @@ class TextHelper
return $future ? 'in ' . round($diff / $mul) . ' years' : round($diff / $prevMul) . ' years ago';
}
+
+ public static function resolveMimeType($mimeType)
+ {
+ $mimeTypes = [
+ 'image/jpeg' => 'jpg',
+ 'image/gif' => 'gif',
+ 'image/png' => 'png',
+ 'application/x-shockwave-flash' => 'swf'];
+ return isset($mimeTypes[$mimeType])
+ ? $mimeTypes[$mimeType]
+ : null;
+ }
}
diff --git a/src/Views/post-view.phtml b/src/Views/post-view.phtml
index 86de76c3..c9812aee 100644
--- a/src/Views/post-view.phtml
+++ b/src/Views/post-view.phtml
@@ -163,11 +163,9 @@ $canEditAnything = count(array_filter($editPostPrivileges)) > 0;
'jpg', 'image/gif' => 'gif', 'image/png' => 'png', 'application/x-shockwave-flash' => 'swf'];
- $mime = $this->context->transport->post->mimeType;
printf(
'Download %s (%s)',
- isset($mimes[$mime]) ? strtoupper($mimes[$mime]) : 'Unknown',
+ strtoupper(TextHelper::resolveMimeType($this->context->transport->post->mimeType)) ?: 'Unknown',
TextHelper::useBytesUnits($this->context->transport->post->fileSize));
?>