feat: 系统使用文档转存

This commit is contained in:
TsMask
2023-11-24 14:22:41 +08:00
parent 0e26e1d754
commit 635167c0f7
3 changed files with 94 additions and 1 deletions

View File

@@ -2,7 +2,9 @@ package file
import (
"fmt"
"io"
"mime/multipart"
"os"
"path"
"path/filepath"
"strconv"
@@ -295,6 +297,43 @@ func ChunkMergeFile(identifier, originalFileName, subPath string) (string, error
return filepath.ToSlash(urlPath), nil
}
// CopyUploadFile 将上传文件资源转移新目录
//
// filePath 上传得到的文件路径 /upload....
// dst 新文件路径 /a/xx.pdf
func CopyUploadFile(filePath, dst string) error {
srcPath := ParseUploadFilePath(filePath)
src, err := os.Open(srcPath)
if err != nil {
return err
}
defer src.Close()
if err := os.MkdirAll(filepath.Dir(dst), 0750); err != nil {
return err
}
// 如果目标文件已经存在,先将目标文件重命名
if _, err := os.Stat(dst); err == nil {
ext := filepath.Ext(dst)
name := dst[0 : len(dst)-len(ext)]
newName := fmt.Sprintf("%s-%s%s", name, time.Now().Format("20060102_150405"), ext)
err := os.Rename(dst, newName)
if err != nil {
return err
}
}
out, err := os.Create(dst)
if err != nil {
return err
}
defer out.Close()
_, err = io.Copy(out, src)
return err
}
// ParseUploadFileDir 得到上传资源目录
//
// subPath 子路径,默认 UploadSubPath.DEFAULT
@@ -304,7 +343,7 @@ func ParseUploadFileDir(subPath string) string {
return filepath.Join(dir, filePath)
}
// ParseUploadFilePath 本地资源路径
// ParseUploadFilePath 上传资源本地绝对资源路径
//
// filePath 上传文件路径
func ParseUploadFilePath(filePath string) string {