41 lines
983 B
Go
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
|
|
}
|