From ef704d36e372a155253a2c70c0cdf776c70d41c8 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Sat, 31 Aug 2024 14:23:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=96=87=E4=BB=B6=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/framework/utils/file/file.go | 3 +- src/framework/utils/file/zip.go | 49 ++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/framework/utils/file/file.go b/src/framework/utils/file/file.go index b8cb5b2..80b7156 100644 --- a/src/framework/utils/file/file.go +++ b/src/framework/utils/file/file.go @@ -351,5 +351,6 @@ func ParseUploadFileDir(subPath string) string { // filePath 上传文件路径 func ParseUploadFilePath(filePath string) string { prefix, dir := resourceUpload() - return strings.Replace(filePath, prefix, dir, 1) + absPath := strings.Replace(filePath, prefix, dir, 1) + return filepath.ToSlash(absPath) } diff --git a/src/framework/utils/file/zip.go b/src/framework/utils/file/zip.go index eac438f..6ff7e95 100644 --- a/src/framework/utils/file/zip.go +++ b/src/framework/utils/file/zip.go @@ -8,6 +8,55 @@ import ( "path/filepath" ) +// UnZip 解 ZIP 压缩文件输出到目录下 +func UnZip(zipFilePath, dirPath string) error { + // 打开ZIP文件进行读取 + r, err := zip.OpenReader(zipFilePath) + if err != nil { + return err + } + defer r.Close() + + // 创建本地输出目录 + if err := os.MkdirAll(dirPath, 0775); err != nil { + return err + } + + // 遍历ZIP文件中的每个文件并解压缩到输出目录 + for _, f := range r.File { + // 打开ZIP文件中的文件 + rc, err := f.Open() + if err != nil { + return err + } + defer rc.Close() + + // 创建解压后的文件 + path := filepath.ToSlash(filepath.Join(dirPath, f.Name)) + if f.FileInfo().IsDir() { + // 如果是目录,创建目录 + if err := os.MkdirAll(path, 0775); err != nil { + return err + } + } else { + if err = os.MkdirAll(filepath.Dir(path), 0775); err != nil { + return err + } + out, err := os.Create(path) + if err != nil { + return err + } + defer out.Close() + + if _, err = io.Copy(out, rc); err != nil { + return err + } + } + } + + return nil +} + // CompressZipByFile 将单文件添加到 ZIP 压缩文件 func CompressZipByFile(zipFilePath, filePath string) error { // 创建一个新的 ZIP 文件