From 33a0dc2a00fe36853833f9eb8712a9b323ddf05b Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Wed, 24 Jul 2024 09:54:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=87=BD=E6=95=B0=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E8=A7=A3=20ZIP=20=E5=8E=8B=E7=BC=A9=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/framework/utils/file/zip.go | 46 +++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/framework/utils/file/zip.go b/src/framework/utils/file/zip.go index eac438f5..f5a3ec00 100644 --- a/src/framework/utils/file/zip.go +++ b/src/framework/utils/file/zip.go @@ -8,6 +8,52 @@ 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.Join(dirPath, f.Name) + if f.FileInfo().IsDir() { + // 如果是目录,创建目录 + os.MkdirAll(path, f.Mode()) + } else { + // 如果是文件,创建文件并写入内容 + file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode()) + if err != nil { + return err + } + defer file.Close() + + _, err = io.Copy(file, rc) + if err != nil { + return err + } + } + } + + return nil +} + // CompressZipByFile 将单文件添加到 ZIP 压缩文件 func CompressZipByFile(zipFilePath, filePath string) error { // 创建一个新的 ZIP 文件