Skip to content

Commit f346b3f

Browse files
committed
Add documentation for MIME type mapping
1 parent 6c2f276 commit f346b3f

File tree

5 files changed

+14
-13
lines changed

5 files changed

+14
-13
lines changed

docs/content/doc/advanced/config-cheat-sheet.en-us.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -966,6 +966,15 @@ MINIO_USE_SSL = false
966966

967967
And used by `[attachment]`, `[lfs]` and etc. as `STORAGE_TYPE`.
968968

969+
## MIME type mapping (`download.mimetype.mapping`)
970+
971+
Configuration for set the expected MIME type based on file extensions of downloadable files. Configuration presents in key-value pairs and file extensions starts with leading `.`.
972+
973+
The following configuration set `Content-Type: application/javascript` header when downloading files with `.js` file extension.
974+
```ini
975+
.js=application/javascript
976+
```
977+
969978
## Other (`other`)
970979

971980
- `SHOW_FOOTER_BRANDING`: **false**: Show Gitea branding in the footer.

modules/base/tool.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -332,11 +332,6 @@ func IsAudioFile(data []byte) bool {
332332
return strings.Contains(DetectContentType(data), "audio/")
333333
}
334334

335-
// IsZipFile detects if data is a zip format
336-
func IsZipFile(data []byte) bool {
337-
return strings.Contains(DetectContentType(data), "application/zip")
338-
}
339-
340335
// EntryIcon returns the octicon class for displaying files/directories
341336
func EntryIcon(entry *git.TreeEntry) string {
342337
switch {

modules/base/tool_test.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -329,12 +329,6 @@ func TestIsAudioFile(t *testing.T) {
329329
assert.False(t, IsAudioFile([]byte("plain text")))
330330
}
331331

332-
func TestIsZipFile(t *testing.T) {
333-
zip, _ := base64.StdEncoding.DecodeString("UEsDBAoAAAAAANG0d1IAAAAAAAAAAAAAAAAIABwAdGV4dC50eHRVVAkAA9pfWmDaX1pgdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA0bR3UgAAAAAAAAAAAAAAAAgAGAAAAAAAAAAAAKSBAAAAAHRleHQudHh0VVQFAAPaX1pgdXgLAAEE9QEAAAQUAAAAUEsFBgAAAAABAAEATgAAAEIAAAAAAA==")
334-
assert.True(t, IsZipFile(zip))
335-
assert.False(t, IsZipFile([]byte("plain text")))
336-
}
337-
338332
// TODO: Test EntryIcon
339333

340334
func TestSetupGiteaRoot(t *testing.T) {

modules/setting/mime_type_map.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
package setting
66

7+
import "strings"
8+
79
var (
810
// MimeTypeMap defines custom mime type mapping settings
911
MimeTypeMap = struct {
@@ -20,7 +22,7 @@ func newMimeTypeMap() {
2022
keys := sec.Keys()
2123
m := make(map[string]string, len(keys))
2224
for _, key := range keys {
23-
m[key.Name()] = key.Value()
25+
m[strings.ToLower(key.Name())] = key.Value()
2426
}
2527
MimeTypeMap.Map = m
2628
if len(keys) > 0 {

routers/repo/download.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ func ServeData(ctx *context.Context, name string, size int64, reader io.Reader)
6464
ctx.Resp.Header().Set("Content-Disposition", fmt.Sprintf(`attachment; filename="%s"`, name))
6565
ctx.Resp.Header().Set("Access-Control-Expose-Headers", "Content-Disposition")
6666
if setting.MimeTypeMap.Enabled {
67-
if mimetype, ok := setting.MimeTypeMap.Map[filepath.Ext(name)]; ok {
67+
fileExtension := strings.ToLower(filepath.Ext(name))
68+
if mimetype, ok := setting.MimeTypeMap.Map[fileExtension]; ok {
6869
ctx.Resp.Header().Set("Content-Type", mimetype)
6970
}
7071
}

0 commit comments

Comments
 (0)