128 lines
2.4 KiB
Go
128 lines
2.4 KiB
Go
package utils
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
var imageFileExtensionContentTypeMap = map[string]string{
|
|
"jpg": "image/jpeg",
|
|
"jpeg": "image/jpeg",
|
|
"png": "image/png",
|
|
"gif": "image/gif",
|
|
"webp": "image/webp",
|
|
}
|
|
|
|
// GetImageContentType returns the content type of specified image file extension or returns empty when the file extension is not image or not supported
|
|
func GetImageContentType(fileExtension string) string {
|
|
contentType, exists := imageFileExtensionContentTypeMap[fileExtension]
|
|
|
|
if !exists {
|
|
return ""
|
|
}
|
|
|
|
return contentType
|
|
}
|
|
|
|
// ListFileNamesWithPrefixAndSuffix returns file name list which has specified prefix and suffix
|
|
func ListFileNamesWithPrefixAndSuffix(path string, prefix string, suffix string) []string {
|
|
dir, err := os.Open(path)
|
|
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
|
|
fileInfos, err := dir.Readdir(0)
|
|
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
|
|
var fileNames []string
|
|
|
|
for i := 0; i < len(fileInfos); i++ {
|
|
fileInfo := fileInfos[i]
|
|
|
|
if !fileInfo.IsDir() &&
|
|
strings.HasPrefix(fileInfo.Name(), prefix) &&
|
|
strings.HasSuffix(fileInfo.Name(), suffix) {
|
|
fileNames = append(fileNames, fileInfo.Name())
|
|
}
|
|
}
|
|
|
|
return fileNames
|
|
}
|
|
|
|
// IsExists returns whether specified file or directory path exits
|
|
func IsExists(path string) (bool, error) {
|
|
_, err := os.Stat(path)
|
|
|
|
if err == nil {
|
|
return true, nil
|
|
}
|
|
|
|
if os.IsNotExist(err) {
|
|
return false, nil
|
|
}
|
|
|
|
return false, err
|
|
}
|
|
|
|
// WriteFile would write file according to specified content
|
|
func WriteFile(path string, data []byte) error {
|
|
file, err := os.Create(path)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
defer file.Close()
|
|
|
|
n, err := file.Write(data)
|
|
|
|
if err == nil && n < len(data) {
|
|
return io.ErrShortWrite
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
// GetFileNameWithoutExtension returns the file name without extension
|
|
func GetFileNameWithoutExtension(path string) string {
|
|
if path == "" {
|
|
return ""
|
|
}
|
|
|
|
for i := len(path) - 1; i >= 0; i-- {
|
|
if path[i] == '/' || path[i] == '\\' {
|
|
path = path[i+1:]
|
|
break
|
|
}
|
|
}
|
|
|
|
if path == "" {
|
|
return ""
|
|
}
|
|
|
|
extension := filepath.Ext(path)
|
|
|
|
if len(extension) < 1 {
|
|
return path
|
|
}
|
|
|
|
return path[0 : len(path)-len(extension)]
|
|
}
|
|
|
|
// GetFileNameExtension returns the file extension without dot
|
|
func GetFileNameExtension(path string) string {
|
|
extension := filepath.Ext(path)
|
|
|
|
if len(extension) < 1 || extension[0] != '.' {
|
|
return extension
|
|
}
|
|
|
|
return extension[1:]
|
|
}
|