diff --git a/server/utils/zipfiles.go b/server/utils/zipfiles.go index aed53c95..a14b0e4c 100644 --- a/server/utils/zipfiles.go +++ b/server/utils/zipfiles.go @@ -13,51 +13,62 @@ import ( //@param: filename string, files []string, oldform, newform string //@return: error -func ZipFiles(filename string, files []string, oldform, newform string) error { +func ZipFiles(filename string, files []string, oldForm, newForm string) error { newZipFile, err := os.Create(filename) if err != nil { return err } - defer newZipFile.Close() + defer func() { + _ = newZipFile.Close() + }() zipWriter := zip.NewWriter(newZipFile) - defer zipWriter.Close() + defer func() { + _ = zipWriter.Close() + }() // 把files添加到zip中 for _, file := range files { - zipfile, err := os.Open(file) + zipFile, err := os.Open(file) if err != nil { return err } - defer zipfile.Close() + err = func() error { + defer func() { + _ = zipFile.Close() + }() + // 获取file的基础信息 + info, err := zipFile.Stat() + if err != nil { + return err + } - // 获取file的基础信息 - info, err := zipfile.Stat() - if err != nil { - return err - } + header, err := zip.FileInfoHeader(info) + if err != nil { + return err + } - header, err := zip.FileInfoHeader(info) - if err != nil { - return err - } - - // 使用上面的FileInforHeader() 就可以把文件保存的路径替换成我们自己想要的了,如下面 - header.Name = strings.Replace(file, oldform, newform, -1) + // 使用上面的FileInfoHeader() 就可以把文件保存的路径替换成我们自己想要的了,如下面 + header.Name = strings.Replace(file, oldForm, newForm, -1) - // 优化压缩 - // 更多参考see http://golang.org/pkg/archive/zip/#pkg-constants - header.Method = zip.Deflate + // 优化压缩 + // 更多参考see http://golang.org/pkg/archive/zip/#pkg-constants + header.Method = zip.Deflate - writer, err := zipWriter.CreateHeader(header) + writer, err := zipWriter.CreateHeader(header) + if err != nil { + return err + } + if _, err = io.Copy(writer, zipFile); err != nil { + return err + } + return nil + }() if err != nil { return err } - if _, err = io.Copy(writer, zipfile); err != nil { - return err - } } return nil }