golang官方自带的zip包处理还是比较简单,不如python强大。所以需要自己写解包的细节部分。
需要引入的包如下:
“os”
“io”
“strings”
“archive/zip”
“path/filepath”
zip包解包代码如下
func unzip(src_zip string) string{ // 解析解压包名 dest := strings.Split(src_zip, ".")[0] // 打开压缩包 unzip_file,err := zip.OpenReader(src_zip) if err!=nil { return "压缩包损坏" } // 创建解压目录 os.MkdirAll(dest, 0755) // 循环解压zip文件 for _,f := range unzip_file.File { rc,err := f.Open() if err!=nil { return "压缩包中文件损坏" } path := filepath.Join(dest, f.Name) // 判断解压出的是文件还是目录 if f.FileInfo().IsDir() { os.MkdirAll(path, f.Mode()) } else { // 创建解压文件 f, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode()) if err != nil { return "创建本地文件失败" } // 写入本地 _,err = io.Copy(f, rc) if err!=nil { if err!=io.EOF { return "写入本地失败" } } f.Close() } } unzip_file.Close() return "OK" }
注:因为golang语法格式在“SH pre”中可能存在问题,所以直接拷贝不确保可以运行。
发表评论