71 lines
1.2 KiB
Go
71 lines
1.2 KiB
Go
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
|
|
}
|