mirror of
https://github.com/golang/go
synced 2024-11-20 08:14:41 -07:00
mime: add AddExtensionType
For example: mime.AddExtensionType(".m3u8", "application/x-mpegURL") mime.AddExtensionType(".ts", "video/MP2T") R=rsc, rsc1 CC=golang-dev https://golang.org/cl/1698046
This commit is contained in:
parent
2ef1c6e2fc
commit
c21e2f3925
@ -10,6 +10,7 @@ import (
|
||||
"once"
|
||||
"os"
|
||||
"strings"
|
||||
"sync"
|
||||
)
|
||||
|
||||
var typeFiles = []string{
|
||||
@ -30,6 +31,8 @@ var mimeTypes = map[string]string{
|
||||
".xml": "text/xml; charset=utf-8",
|
||||
}
|
||||
|
||||
var mimeLock sync.RWMutex
|
||||
|
||||
func loadMimeFile(filename string) {
|
||||
f, err := os.Open(filename, os.O_RDONLY, 0666)
|
||||
if err != nil {
|
||||
@ -79,5 +82,22 @@ func initMime() {
|
||||
// /etc/apache/mime.types
|
||||
func TypeByExtension(ext string) string {
|
||||
once.Do(initMime)
|
||||
return mimeTypes[ext]
|
||||
mimeLock.RLock()
|
||||
typename := mimeTypes[ext]
|
||||
mimeLock.RUnlock()
|
||||
return typename
|
||||
}
|
||||
|
||||
// AddExtensionType sets the MIME type associated with
|
||||
// the extension ext to typ. The extension should begin with
|
||||
// a leading dot, as in ".html".
|
||||
func AddExtensionType(ext, typ string) os.Error {
|
||||
once.Do(initMime)
|
||||
if len(ext) < 1 || ext[0] != '.' {
|
||||
return os.EINVAL
|
||||
}
|
||||
mimeLock.Lock()
|
||||
mimeTypes[ext] = typ
|
||||
mimeLock.Unlock()
|
||||
return nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user