| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package upload
- import (
- "errors"
- "io"
- "mime/multipart"
- "os"
- "path"
- "speechAnalysis/conf"
- "speechAnalysis/pkg/logx"
- "strings"
- )
- type Local struct{}
- func (*Local) UploadFile(file *multipart.FileHeader) (string, string, error) {
- filename := path.Base(file.Filename)
- // 尝试创建此路径
- mkdirErr := os.MkdirAll(conf.LocalConf.StorePath, os.ModePerm)
- if mkdirErr != nil {
- logx.Errorf("function os.MkdirAll() err:%v", mkdirErr)
- return "", "", errors.New("function os.MkdirAll() Filed, err:" + mkdirErr.Error())
- }
- // 拼接路径和文件名
- p := conf.LocalConf.StorePath + "/" + filename
- filepath := conf.LocalConf.StorePath + "/" + filename
- f, openError := file.Open() // 读取文件
- if openError != nil {
- logx.Errorf("function file.Open() err:%v", openError)
- return "", "", errors.New("function file.Open() Filed, err:" + openError.Error())
- }
- defer f.Close() // 创建文件 defer 关闭
- out, createErr := os.Create(p)
- if createErr != nil {
- logx.Errorf("function os.Create() err:%v", createErr)
- return "", "", errors.New("function os.Create() Filed, err:" + createErr.Error())
- }
- defer out.Close() // 创建文件 defer 关闭
- _, copyErr := io.Copy(out, f) // 传输(拷贝)文件
- if copyErr != nil {
- logx.Errorf("function io.Copy() err:%v", copyErr)
- return "", "", errors.New("function io.Copy() Filed, err:" + copyErr.Error())
- }
- return filepath, filename, nil
- }
- func (*Local) DeleteFile(key string) error {
- p := conf.LocalConf.StorePath + "/" + key
- if strings.Contains(p, conf.LocalConf.StorePath) {
- if err := os.Remove(p); err != nil {
- return errors.New("本地文件删除失败, err:" + err.Error())
- }
- }
- return nil
- }
|