YiTao/util/file.go

71 lines
1.2 KiB
Go
Raw Normal View History

2024-11-09 14:59:27 +08:00
package util
import (
"io"
"os"
)
func InitMkDir() {
os.MkdirAll("./public/upload/item/img/", os.ModePerm)
}
func SaveToFile(filename string, data []byte) error {
file, err := os.Create(filename)
if err != nil {
return err
}
defer file.Close()
_, err = file.Write(data)
if err != nil {
return err
}
return nil
}
func ReadFromFile(filename string) ([]byte, error) {
file, err := os.Open(filename)
if err != nil {
return nil, err
}
defer file.Close()
return io.ReadAll(file)
}
func DeleteFile(filename string) error {
return os.Remove(filename)
}
// 判断文件是否为图片
func FileIsImage(filename string) bool {
// 使用文件头检测文件类型
file, err := os.Open(filename)
if err != nil {
return false
}
defer file.Close()
// 读取文件前 512 个字节
head := make([]byte, 512)
_, err = file.Read(head)
if err != nil {
return false
}
// 判断文件类型
if head[0] == 0xFF && head[1] == 0xD8 {
return true
}
if head[0] == 0x89 && head[1] == 0x50 && head[2] == 0x4E && head[3] == 0x47 {
return true
}
if head[0] == 0x47 && head[1] == 0x49 && head[2] == 0x46 && head[3] == 0x38 {
return true
}
if head[0] == 0x42 && head[1] == 0x4D {
return true
}
return false
}