]> source.dussan.org Git - gitea.git/commitdiff
Fix lfs file viewer (#14568)
authorLunny Xiao <xiaolunwen@gmail.com>
Fri, 5 Feb 2021 01:29:42 +0000 (09:29 +0800)
committerGitHub <noreply@github.com>
Fri, 5 Feb 2021 01:29:42 +0000 (02:29 +0100)
routers/repo/view.go

index 45f17dee44b96dea1b42ff87db6f3907324cab19..e50e4613b7a9fa3c8b65669d1667f374795bbf6f 100644 (file)
@@ -385,7 +385,6 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
 
        fileSize := blob.Size()
        ctx.Data["FileIsSymlink"] = entry.IsLink()
-       ctx.Data["FileSize"] = fileSize
        ctx.Data["FileName"] = blob.Name()
        ctx.Data["RawFileLink"] = rawLink + "/" + ctx.Repo.TreePath
 
@@ -395,21 +394,8 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
 
        isTextFile := base.IsTextFile(buf)
        isLFSFile := false
-       ctx.Data["IsTextFile"] = isTextFile
-
        isDisplayingSource := ctx.Query("display") == "source"
        isDisplayingRendered := !isDisplayingSource
-       isRepresentableAsText := base.IsRepresentableAsText(buf)
-       ctx.Data["IsRepresentableAsText"] = isRepresentableAsText
-       if !isRepresentableAsText {
-               // If we can't show plain text, always try to render.
-               isDisplayingSource = false
-               isDisplayingRendered = true
-       }
-       ctx.Data["IsDisplayingSource"] = isDisplayingSource
-       ctx.Data["IsDisplayingRendered"] = isDisplayingRendered
-
-       ctx.Data["IsTextSource"] = isTextFile || isDisplayingSource
 
        //Check for LFS meta file
        if isTextFile && setting.LFS.StartServer {
@@ -422,7 +408,6 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
                        }
                }
                if meta != nil {
-                       ctx.Data["IsLFSFile"] = true
                        isLFSFile = true
 
                        // OK read the lfs object
@@ -445,14 +430,25 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
                        buf = buf[:n]
 
                        isTextFile = base.IsTextFile(buf)
-                       ctx.Data["IsTextFile"] = isTextFile
-
                        fileSize = meta.Size
-                       ctx.Data["FileSize"] = meta.Size
-                       filenameBase64 := base64.RawURLEncoding.EncodeToString([]byte(blob.Name()))
-                       ctx.Data["RawFileLink"] = fmt.Sprintf("%s%s.git/info/lfs/objects/%s/%s", setting.AppURL, ctx.Repo.Repository.FullName(), meta.Oid, filenameBase64)
+                       ctx.Data["RawFileLink"] = fmt.Sprintf("%s/media/%s/%s", ctx.Repo.RepoLink, ctx.Repo.BranchNameSubURL(), ctx.Repo.TreePath)
                }
        }
+
+       isRepresentableAsText := base.IsRepresentableAsText(buf)
+       if !isRepresentableAsText {
+               // If we can't show plain text, always try to render.
+               isDisplayingSource = false
+               isDisplayingRendered = true
+       }
+       ctx.Data["IsLFSFile"] = isLFSFile
+       ctx.Data["FileSize"] = fileSize
+       ctx.Data["IsTextFile"] = isTextFile
+       ctx.Data["IsRepresentableAsText"] = isRepresentableAsText
+       ctx.Data["IsDisplayingSource"] = isDisplayingSource
+       ctx.Data["IsDisplayingRendered"] = isDisplayingRendered
+       ctx.Data["IsTextSource"] = isTextFile || isDisplayingSource
+
        // Check LFS Lock
        lfsLock, err := ctx.Repo.Repository.GetTreePathLock(ctx.Repo.TreePath)
        ctx.Data["LFSLock"] = lfsLock
@@ -542,7 +538,6 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
                        ctx.Data["MarkupType"] = markupType
                        ctx.Data["FileContent"] = string(markup.Render(blob.Name(), buf, path.Dir(treeLink), ctx.Repo.Repository.ComposeDocumentMetas()))
                }
-
        }
 
        if ctx.Repo.CanEnableEditor() {