3 Star 5 Fork 6

三三物联网/ssiot-core

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
file.go 2.11 KB
一键复制 编辑 原始数据 按行查看 历史
zliu 提交于 2023-06-19 17:28 +08:00 . 要及时释放啊
package utils
import (
"errors"
"io/ioutil"
"log"
"mime/multipart"
"net/http"
"os"
"path"
"strings"
"github.com/shamsher31/goimgext"
)
// GetSize 获取文件大小
func GetSize(f multipart.File) (int, error) {
content, err := ioutil.ReadAll(f)
return len(content), err
}
// GetExt 获取文件后缀
func GetExt(fileName string) string {
return path.Ext(fileName)
}
// CheckExist 检查文件是否存在
func CheckExist(src string) bool {
_, err := os.Stat(src)
return os.IsNotExist(err)
}
// CheckPermission 检查文件权限
func CheckPermission(src string) bool {
_, err := os.Stat(src)
return os.IsPermission(err)
}
// IsNotExistMkDir 检查文件夹是否存在
// 如果不存在则新建文件夹
func IsNotExistMkDir(src string) error {
if exist := !CheckExist(src); exist == false {
if err := MkDir(src); err != nil {
return err
}
}
return nil
}
// MkDir 新建文件夹
func MkDir(src string) error {
err := os.MkdirAll(src, os.ModePerm)
if err != nil {
return err
}
return nil
}
// Open 打开文件
func Open(name string, flag int, perm os.FileMode) (*os.File, error) {
f, err := os.OpenFile(name, flag, perm)
if err != nil {
return nil, err
}
return f, nil
}
// GetImgType 获取Img文件类型
func GetImgType(p string) (string, error) {
file, err := os.Open(p)
if err != nil {
log.Println(err)
os.Exit(1)
}
buff := make([]byte, 512)
_, err = file.Read(buff)
if err != nil {
log.Println(err)
os.Exit(1)
}
filetype := http.DetectContentType(buff)
ext := imgext.Get()
for i := 0; i < len(ext); i++ {
if strings.Contains(ext[i], filetype[6:len(filetype)]) {
return filetype, nil
}
}
return "", errors.New("Invalid image type")
}
// GetType 获取文件类型
func GetType(p string) (string, error) {
file, err := os.Open(p)
defer file.Close()
if err != nil {
log.Println(err)
os.Exit(1)
}
buff := make([]byte, 512)
_, err = file.Read(buff)
if err != nil {
log.Println(err)
}
filetype := http.DetectContentType(buff)
//ext := GetExt(p)
//var list = strings.Split(filetype, "/")
//filetype = list[0] + "/" + ext
return filetype, nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/sansaniot/ssiot-core.git
git@gitee.com:sansaniot/ssiot-core.git
sansaniot
ssiot-core
ssiot-core
v1.8.35

搜索帮助