diff --git a/routers/repo/repo.go b/routers/repo/repo.go
index c8ebf23626..c6e8b504a9 100644
--- a/routers/repo/repo.go
+++ b/routers/repo/repo.go
@@ -263,15 +263,18 @@ func Download(ctx *middleware.Context) {
 		refName     string
 		ext         string
 		archivePath string
+		archiveType git.ArchiveType
 	)
 
 	switch {
 	case strings.HasSuffix(uri, ".zip"):
 		ext = ".zip"
 		archivePath = path.Join(ctx.Repo.GitRepo.Path, "archives/zip")
+		archiveType = git.ZIP
 	case strings.HasSuffix(uri, ".tar.gz"):
 		ext = ".tar.gz"
 		archivePath = path.Join(ctx.Repo.GitRepo.Path, "archives/targz")
+		archiveType = git.TARGZ
 	default:
 		ctx.Error(404)
 		return
@@ -316,7 +319,7 @@ func Download(ctx *middleware.Context) {
 
 	archivePath = path.Join(archivePath, base.ShortSha(commit.Id.String())+ext)
 	if !com.IsFile(archivePath) {
-		if err := commit.CreateArchive(archivePath, git.ZIP); err != nil {
+		if err := commit.CreateArchive(archivePath, archiveType); err != nil {
 			ctx.Handle(500, "Download -> CreateArchive "+archivePath, err)
 			return
 		}