App.go
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!") }
zip/ziputil.go
package ziputil import ( "archive/zip" "io/ioutil" "log" "os" "strings" ) 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 { if item.FileInfo().IsDir() { os.Mkdir(dest+item.Name, 0777); continue } rc, _ := item.Open() dst, _ := createFile(dest + item.Name); payload, err := ioutil.ReadAll(rc) n, err := dst.Write(payload) if err != nil { log.Print(dest + item.Name) log.Print(err) } else { log.Print(n/1024, "kb"," ",dest + item.Name) } } 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) }
相关推荐
毕业设计基于Golang开发的BBS论坛系统源码+项目使用说明.zip 特性 注册/登陆模块(用户名或邮箱登陆) 设置昵称、邮箱、用户名 发表动态、文章 评论系统 动态/文章的点赞 支持浏览器 token 记住登录 支持文章...
解压后,将jar包添加到项目的类路径中,按照API文档编写代码进行文件上传下载。 3. **libfastcommon**:libfastcommon-master.zip是FastDFS的公共库,包含了FastDFS所需的一些基础功能。解压后编译安装,为FastDFS...
使用`unzip`命令解压zip文件,如`unzip archive.zip`。 10. **启动Apache服务**: Apache服务器通常使用`systemctl`命令管理,启动Apache服务的命令为`sudo systemctl start httpd`(或者`apache2`,具体取决于...
1. **百度网盘**:百度网盘是一款由百度公司提供的云存储服务,用户可以在其中上传、下载文件,进行文件管理,并支持分享链接给其他用户。 2. **Go语言(Golang)**:Go语言是由Google开发的一种静态类型的、编译型...
在压缩包内的文件名列表中,我们只看到了"BaiduPCS-Go-v3.6.2-windows-x64",这很可能是一个可执行文件或者安装包,用户解压后可以直接运行或安装到Windows系统中。通常,这样的程序会包含主程序、相关的配置文件、...
- **安装Crawlab**:首先下载 `crawlab-master.zip` 文件,解压后按照官方文档进行安装和配置,通常涉及安装依赖、运行服务等步骤。 - **配置环境**:确保你的环境中已经安装了支持的编程语言和相应的爬虫框架,例如...
它通过HTTP/HTTPS协议接收源文件,通常以压缩格式(如.zip或.tar.gz)发送,然后解压并整合到Node.js项目中。这一过程可能涉及权限检查、文件校验和防止重复上传的机制,以确保安全性和数据完整性。 4. **自动化...
执行`bosh-init deploy manifest.yml`会启动BOSH的初始化过程,它将编译CPI代码,生成一个可以被BOSH使用的二进制文件,并将其上传到BOSH的Director。这个步骤是将CPI集成到BOSH系统的关键。 4. **手动联网**: 在...