mirror of
https://github.com/pocket-id/pocket-id.git
synced 2025-12-07 01:10:21 +03:00
96 lines
1.5 KiB
Go
96 lines
1.5 KiB
Go
package utils
|
|
|
|
import (
|
|
"io"
|
|
"mime/multipart"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
func GetFileExtension(filename string) string {
|
|
splitted := strings.Split(filename, ".")
|
|
return splitted[len(splitted)-1]
|
|
}
|
|
|
|
func GetImageMimeType(ext string) string {
|
|
switch ext {
|
|
case "jpg", "jpeg":
|
|
return "image/jpeg"
|
|
case "png":
|
|
return "image/png"
|
|
case "svg":
|
|
return "image/svg+xml"
|
|
case "ico":
|
|
return "image/x-icon"
|
|
default:
|
|
return ""
|
|
}
|
|
}
|
|
|
|
func CopyDirectory(srcDir, destDir string) error {
|
|
files, err := os.ReadDir(srcDir)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
for _, file := range files {
|
|
srcFilePath := filepath.Join(srcDir, file.Name())
|
|
destFilePath := filepath.Join(destDir, file.Name())
|
|
|
|
err := CopyFile(srcFilePath, destFilePath)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func CopyFile(srcFilePath, destFilePath string) error {
|
|
srcFile, err := os.Open(srcFilePath)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer srcFile.Close()
|
|
|
|
err = os.MkdirAll(filepath.Dir(destFilePath), os.ModePerm)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
destFile, err := os.Create(destFilePath)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer destFile.Close()
|
|
|
|
_, err = io.Copy(destFile, srcFile)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func SaveFile(file *multipart.FileHeader, dst string) error {
|
|
src, err := file.Open()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer src.Close()
|
|
|
|
if err = os.MkdirAll(filepath.Dir(dst), 0o750); err != nil {
|
|
return err
|
|
}
|
|
|
|
out, err := os.Create(dst)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer out.Close()
|
|
|
|
_, err = io.Copy(out, src)
|
|
return err
|
|
}
|