教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang http上传zip文件,自动解压到目录

golang http上传zip文件,自动解压到目录

发布时间:2021-12-31   编辑:jiaochengji.com
教程集为您提供golang http上传zip文件,自动解压到目录等资源,欢迎您收藏本站,我们将为您提供最新的golang http上传zip文件,自动解压到目录资源

 

 

 

App.go

 

<pre class="golang"> package main import ( "./zip" "flag" "fmt" "io" "log" "net/http" "os" ) var ( dir = flag.String("d", "./temp/", "location dir") addr = flag.String("b", "0.0.0.0:8090", "http listen port") ) func main() { flag.Parse() log.Println("绑定" *addr) log.Println("存储地址" *dir) http.HandleFunc("/upload", upload) http.ListenAndServe(*addr, nil) } func upload(w http.ResponseWriter, r *http.Request) { if r.Method == "GET" { fmt.Fprintln(w, "滚") return } err := r.ParseMultipartForm(1024 * 1024 * 100) if err != nil { fmt.Fprintln(w, err) return } file, handler, err := r.FormFile("uploadfile") defer file.Close() if err != nil { fmt.Fprintln(w, err) return } os.Mkdir(*dir, 0777) log.Println(handler.Filename) f, err := os.OpenFile(*dir handler.Filename, os.O_WRONLY|os.O_CREATE, 0666) defer f.Close() if err != nil { fmt.Fprintln(w, err) return } io.Copy(f, file) err = ziputil.DeCompress(f.Name(), *dir) if err != nil { fmt.Fprintln(w, err) return } os.Remove(f.Name()) fmt.Fprintln(w, "upload ok!") } </pre>

 

 

  zip/ziputil.go

 

<pre class="golang">package ziputil import ( "os" "io" "strings" "archive/zip" "log" ) func DeCompress(tarFile, dest string) error { if strings.HasSuffix(tarFile,".zip"){ return zipDeCompress(tarFile,dest) } return nil } func zipDeCompress(zipFile, dest string) error { or ,err := zip.OpenReader(zipFile); defer or.Close() if err!=nil {return err} log.Print(" 压缩文件",zipFile," 解压到",dest ) for _,item := range or.File { log.Print(dest item.Name) if item.FileInfo().IsDir(){os.Mkdir(dest item.Name,0777);continue} rc, _ := item.Open() dst,_ := createFile(dest item.Name); _,err :=io.Copy(dst,rc) if err!=nil { log.Print(err) } } return nil } func createFile(name string) (*os.File, error) { err := os.MkdirAll(string([]rune(name)[0:strings.LastIndex(name, "/")]), 0755) if err != nil { return nil, err } return os.Create(name) } </pre>

 

 

到此这篇关于“golang http上传zip文件,自动解压到目录”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang http上传zip文件,自动解压到目录
php利用ZipArchive类实现文件压缩与解压
php ZipArchive类使用实例详解
php解压文件的方法 php解压zip文件的例子
RAR参数详解
PHP文件怎么解压和压缩?(代码示例)
python如何压缩zip
php在线压缩打包rar并自动下载文件的例子
.NET(C#)创建和读取zip压缩文档实例
在Win 98 PWS上安装PHP 4.0

[关闭]
~ ~