判断文件路径是否存在
func PathExists(path string) (bool, error) {
_, err := os.Stat(path)
if err == nil {
return true, nil
}
if os.IsNotExist(err) {
return false, nil
}
return false, err
}
创建文件夹
func CreateDir(dirs ...string) (err error) {
for _, v := range dirs {
exist, err := PathExists(v)
if err != nil {
return err
}
if !exist {
global.GvaLog.Debug("create directory" + v)
err = os.MkdirAll(v, os.ModePerm)
if err != nil {
global.GvaLog.Error("create directory"+v, zap.Any(" error:", err))
}
}
}
return err
}
删除本地文件
// DeleteLocalFile 删除当地文件
func DeleteLocalFile(filePath string) (err error) {
err = os.Remove(filePath)
return err
}
获取文件大小
// GetFileSize 获得文件大小
func GetFileSize(filePath string) (size int64) {
file, err := os.Open(filePath)
defer file.Close()
if err == nil {
fi, _ := file.Stat()
return fi.Size()
}
return -1
}
保存文件到本地
// SaveLocalFile 保存文件到本地
// header 要保存的文件
// return saveDir 要保存到的目录
// return newFileName 重命名后的新名字
// return saveFilePath 文件保存后的保存路径
func SaveLocalFile(header *multipart.FileHeader, saveDir string) (err error, newFileName string, saveFilePath string) {
ext := path.Ext(header.Filename)
// 读取文件名(不带后缀)
name := strings.TrimSuffix(header.Filename, ext)
/* 重命名文件,防止文件重名 */
newName := name + "_" + time.Now().Format("20060102150405") + ext
/* 读取存放文件的路径 */
saveFilePath = saveDir + "/" + newName
/* 本地保存文件 */
// 读取用户上传的文件
in, readErr := header.Open()
if readErr != nil {
return errors.New("读取文件失败!"), "", ""
}
defer in.Close()
// 创建预存的文件
out, createErr := os.Create(saveFilePath)
if createErr != nil {
return errors.New("创建本地文件失败!"), "", ""
}
defer out.Close()
// 拷贝文件
_, copyErr := io.Copy(out, in)
if copyErr != nil {
return errors.New("保存本地文件失败!"), "", ""
}
return nil, newName, saveFilePath
}
获取文件后缀
// GetFileSuffix 读取文件后缀名
func GetFileSuffix(header *multipart.FileHeader) (suffix string) {
ext := path.Ext(header.Filename)
suffix = strings.ToLower(ext[1:len(ext)])
return suffix
}
根据map生成json文件
func CreateJsonFile(info interface{})(savePath string){
var dataJson = make(map[string]interface{})
dataJson["data"] = info
b11, err := json.Marshal(dataJson)
if err != nil {
fmt.Println("error:", err)
}
relDir := "../static/json/"
CreateDir(relDir)
savePath = relDir+utils2.ToString(time.Now().UnixNano())+".json"
err = ioutil.WriteFile(savePath, b11, os.ModeAppend)
return savePath
}