fileupload: hardcode a few primary file extensions
This commit is contained in:
parent
185f6ae3bd
commit
f214e5a5aa
|
@ -39,6 +39,23 @@ var inlineMIMETypes = map[string]bool{
|
||||||
"video/webm": true,
|
"video/webm": true,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Some MIME types have multiple possible extensions, and
|
||||||
|
// mime.ExtensionsByType returns them out-of-order. We have to hardcode
|
||||||
|
// a few MIME types to work around this unfortunately (e.g. to not use
|
||||||
|
// ".jfif" for "image/jpeg").
|
||||||
|
//
|
||||||
|
// Note, this is not for registering new MIME types (use mime.AddExtensionType
|
||||||
|
// for that purpose).
|
||||||
|
var primaryExts = map[string]string{
|
||||||
|
"audio/aac": "aac",
|
||||||
|
"audio/mp4": "mp4",
|
||||||
|
"audio/mpeg": "mp3",
|
||||||
|
"audio/ogg": "oga",
|
||||||
|
"image/jpeg": "jpeg",
|
||||||
|
"text/plain": "txt",
|
||||||
|
"video/mp4": "mp4",
|
||||||
|
}
|
||||||
|
|
||||||
type Uploader interface {
|
type Uploader interface {
|
||||||
load(filename string) (basename string, modTime time.Time, content io.ReadSeekCloser, err error)
|
load(filename string) (basename string, modTime time.Time, content io.ReadSeekCloser, err error)
|
||||||
store(r io.Reader, username, mimeType, basename string) (outFilename string, err error)
|
store(r io.Reader, username, mimeType, basename string) (outFilename string, err error)
|
||||||
|
|
|
@ -44,8 +44,9 @@ func (fs *fs) store(r io.Reader, username, mimeType, origBasename string) (outFi
|
||||||
|
|
||||||
var suffix string
|
var suffix string
|
||||||
if filepath.Ext(origBasename) == "" && mimeType != "" {
|
if filepath.Ext(origBasename) == "" && mimeType != "" {
|
||||||
exts, _ := mime.ExtensionsByType(mimeType)
|
if ext, ok := primaryExts[mimeType]; ok {
|
||||||
if len(exts) > 0 {
|
suffix = "." + ext
|
||||||
|
} else if exts, _ := mime.ExtensionsByType(mimeType); len(exts) == 1 {
|
||||||
suffix = exts[0]
|
suffix = exts[0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue