]> source.dussan.org Git - gitea.git/commitdiff
Raw text file view returns correct charset in content-type header if not utf-8
authorVladimir Vissoultchev <wqweto@gmail.com>
Tue, 28 Jul 2015 16:50:35 +0000 (19:50 +0300)
committerVladimir Vissoultchev <wqweto@gmail.com>
Tue, 28 Jul 2015 16:50:35 +0000 (19:50 +0300)
routers/repo/download.go

index b1c5fbc84dc7766ebbda6d537882bdca632ccf34..8e9efba31b3895c5e136d0239e283e6ebf2830f6 100644 (file)
@@ -26,10 +26,17 @@ func ServeBlob(ctx *middleware.Context, blob *git.Blob) error {
        }
 
        _, isTextFile := base.IsTextFile(buf)
-       _, isImageFile := base.IsImageFile(buf)
-       if !isTextFile && !isImageFile {
-               ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+path.Base(ctx.Repo.TreeName))
-               ctx.Resp.Header().Set("Content-Transfer-Encoding", "binary")
+       if isTextFile {
+               charset, _ := base.DetectEncoding(buf)
+               if charset != "utf-8" {
+                       ctx.Resp.Header().Set("Content-Type", "text/plain; charset="+charset)
+               }
+       } else {
+               _, isImageFile := base.IsImageFile(buf)
+               if !isImageFile {
+                       ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+path.Base(ctx.Repo.TreeName))
+                       ctx.Resp.Header().Set("Content-Transfer-Encoding", "binary")
+               }
        }
        ctx.Resp.Write(buf)
        _, err = io.Copy(ctx.Resp, dataRc)