c5_labsci/zciyon/upload.go
2026-01-27 00:52:00 +08:00

41 lines
983 B
Go

package zciyon
import (
"bufio"
"fmt"
_ "image/png"
"io"
"mime/multipart"
"os"
"path/filepath"
)
func SaveUploadFile(path string, file *multipart.FileHeader) (map[string]any, error) {
if FileExist(CiyWebDir+"/ud/"+path) == nil {
return nil, fmt.Errorf("文件已存在")
}
err := DirMake(CiyWebDir + "/ud/" + filepath.Dir(path))
if err != nil {
return nil, fmt.Errorf("创建目录失败:%v", err)
}
srcF, err := file.Open()
if err != nil {
return nil, fmt.Errorf("打开临时文件失败:%v[%v]", err, file.Filename)
}
defer srcF.Close()
reader := bufio.NewReader(srcF)
dstF, err := os.OpenFile(CiyWebDir+"/ud/"+path, os.O_WRONLY|os.O_CREATE, 0644)
if err != nil {
return nil, fmt.Errorf("创建文件失败:" + path)
}
defer dstF.Close()
writer := bufio.NewWriter(dstF)
_, err = io.Copy(writer, reader)
if err != nil {
return nil, fmt.Errorf("拷贝文件失败:" + path)
}
ret := map[string]any{}
ret["url"] = "/" + path
return ret, nil
}