diff --git a/src/main/scala/app/IssuesController.scala b/src/main/scala/app/IssuesController.scala
index 61bd52f..2e60168 100644
--- a/src/main/scala/app/IssuesController.scala
+++ b/src/main/scala/app/IssuesController.scala
@@ -275,7 +275,10 @@
get("/:owner/:repository/_attached/:file")(referrersOnly { repository =>
defining(new java.io.File(Directory.getAttachedDir(repository.owner, repository.name), params("file"))){ file =>
- if(file.exists) file else NotFound
+ if(file.exists) {
+ contentType = FileUtil.getMimeType(file)
+ file
+ } else NotFound
}
})
diff --git a/src/main/scala/util/FileUtil.scala b/src/main/scala/util/FileUtil.scala
index 0145db4..46218ee 100644
--- a/src/main/scala/util/FileUtil.scala
+++ b/src/main/scala/util/FileUtil.scala
@@ -5,9 +5,13 @@
import java.io.File
import util.ControlUtil._
import scala.util.Random
+import eu.medsea.mimeutil.{MimeUtil2, MimeType}
object FileUtil {
+ private val mimeUtil = new MimeUtil2()
+ mimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector")
+
def getMimeType(name: String): String =
defining(URLConnection.getFileNameMap()){ fileNameMap =>
fileNameMap.getContentTypeFor(name) match {
@@ -16,6 +20,16 @@
}
}
+ /**
+ * Returns mime type detected by file content.
+ *
+ * @param file File object
+ * @return mime type String
+ */
+ def getMimeType(file: File): String = {
+ MimeUtil2.getMostSpecificMimeType(mimeUtil.getMimeTypes(file, new MimeType("application/octet-stream"))).toString
+ }
+
def getContentType(name: String, bytes: Array[Byte]): String = {
defining(getMimeType(name)){ mimeType =>
if(mimeType == "application/octet-stream" && isText(bytes)){
diff --git a/src/main/scala/view/Markdown.scala b/src/main/scala/view/Markdown.scala
index 4d998bd..242b6e5 100644
--- a/src/main/scala/view/Markdown.scala
+++ b/src/main/scala/view/Markdown.scala
@@ -89,7 +89,8 @@
) with LinkConverter with RequestCache {
override protected def printImageTag(imageNode: SuperNode, url: String): Unit =
- printer.print("
")
+ printer.print("")
+ .print("
")
override protected def printLink(rendering: LinkRenderer.Rendering): Unit = {
printer.print('<').print('a')