Browse Source

fix image display

slene 11 years ago
parent
commit
346db02d89
3 changed files with 26 additions and 9 deletions
  1. 8 0
      modules/base/markdown.go
  2. 12 7
      routers/repo/repo.go
  3. 6 2
      templates/repo/single_file.tmpl

+ 8 - 0
modules/base/markdown.go

@@ -51,6 +51,14 @@ func IsTextFile(data []byte) (string, bool) {
 	return contentType, false
 }
 
+func IsImageFile(data []byte) (string, bool) {
+	contentType := http.DetectContentType(data)
+	if strings.Index(contentType, "img/") != -1 {
+		return contentType, true
+	}
+	return contentType, false
+}
+
 func IsReadmeFile(name string) bool {
 	name = strings.ToLower(name)
 	if len(name) < 6 {

+ 12 - 7
routers/repo/repo.go

@@ -120,15 +120,20 @@ func Single(ctx *middleware.Context, params martini.Params) {
 
 			data := blob.Contents()
 			_, isTextFile := base.IsTextFile(data)
+			_, isImageFile := base.IsImageFile(data)
 			ctx.Data["FileIsText"] = isTextFile
 
-			readmeExist := base.IsMarkdownFile(repoFile.Name) || base.IsReadmeFile(repoFile.Name)
-			ctx.Data["ReadmeExist"] = readmeExist
-			if readmeExist {
-				ctx.Data["FileContent"] = string(base.RenderMarkdown(data, ""))
+			if isImageFile {
+				ctx.Data["IsImageFile"] = true
 			} else {
-				if isTextFile {
-					ctx.Data["FileContent"] = string(data)
+				readmeExist := base.IsMarkdownFile(repoFile.Name) || base.IsReadmeFile(repoFile.Name)
+				ctx.Data["ReadmeExist"] = readmeExist
+				if readmeExist {
+					ctx.Data["FileContent"] = string(base.RenderMarkdown(data, ""))
+				} else {
+					if isTextFile {
+						ctx.Data["FileContent"] = string(data)
+					}
 				}
 			}
 		}
@@ -236,9 +241,9 @@ func SingleDownload(ctx *middleware.Context, params martini.Params) {
 
 	data := blob.Contents()
 	contentType, isTextFile := base.IsTextFile(data)
+	_, isImageFile := base.IsImageFile(data)
 	ctx.Res.Header().Set("Content-Type", contentType)
 	if !isTextFile {
-		ctx.Res.Header().Set("Content-Type", contentType)
 		ctx.Res.Header().Set("Content-Disposition", "attachment; filename="+filepath.Base(treename))
 		ctx.Res.Header().Set("Content-Transfer-Encoding", "binary")
 	}

+ 6 - 2
templates/repo/single_file.tmpl

@@ -23,7 +23,11 @@
     </div>
     {{if not .FileIsText}}
         <div class="panel-footer text-center">
-            <a href="{{.FileLink}}" class="btn btn-default">View Raw</a>
+            {{if .IsImageFile}}
+                <img src="{{.FileLink}}">
+            {{else}}
+                <a href="{{.FileLink}}" class="btn btn-default">View Raw</a>
+            {{end}}
         </div>
     {{else}}
         {{if .ReadmeExist}}
@@ -43,4 +47,4 @@
             </div>
         {{end}}
     {{end}}
-</div>
+</div>