免费资源网 – https://freexyz.cn/
目录
- Golang将上传的文件压缩成zip小案例
- go语言实现zip压缩文件
Golang将上传的文件压缩成zip小案例
这是一个简单的golang压缩文件小案例,可做很多的拓展,这里使用的库是archive/zip,在gopkg里面搜zip就行。
使用gin框架,获取前端传过来的文件压缩成zip,存储路径入数据库中,代码简单示例如下:
@Param file formData file true "上传文件"
func UploadToZip(c *gin.Context){
//获取前端传过来的文件,如果有多个文件: 使用form,_ := c.MultipartForm()
//files := form.File["file"]
//然后遍历files拿到每个文件
file,err := c.FormFile("file")
if err != nil {
response.Fail("参数有误",c)
return
}
//创建目录和指定文件名
err = c.SaveUploadedFile( file ,"files/" + file + file.Filename)
if err != nil {
response.Fail("存储文件失败",c)
return
}
//在指定的目录生成你要的zip文件
create, err := os.Create("flies/dome.zip")
defer create.Close()
if err != nil {
response.Fail("创建失败",c)
retuen
}
//创建一个zip流
writer := zip.NewWriter(create)
defer writer.Close()
//读取存储的目录,将里面的文件压缩
readFile ,err := os.ReadDir("files")
if err != nil {
response.Fail("读取文件失败",c)
retuen
}
//遍历目录,获取单个文件
for _,rf := range readFile {
//只压缩文件,目录不做压缩
if !rf.IsDir() {
//打开要压缩的文件
open,err := os.Open("flies" + rf.Name())
if err != nil {
response.Fail("打开文件失败",c)
retuen
}
//创建一个压缩包里面的文件和文件名,这样解压后会有一个files目录,目录里面有压缩的文件
f, _ := writer.Create("flies" + rf.Name())
//将文件压缩成zip
if _,err := io.Copy(f,open);err != nil {
response.Fail("压缩失败",c)
retuen
}
}
}
//将压缩路径存放数据库
...
response.OK("压缩成功",c)
}
go语言实现zip压缩文件
直接上代码:
func ZipFiles(filename string, files []string, oldform, newform string) error {
newZipFile, err := os.Create(filename)
if err != nil {
return err
}
defer newZipFile.Close()
zipWriter := zip.NewWriter(newZipFile)
defer zipWriter.Close()
// 把files添加到zip中
for _, file := range files {
zipfile, err := os.Open(file)
if err != nil {
return err
}
defer zipfile.Close()
info, err := zipfile.Stat()
if err != nil {
return err
}
header, err := zip.FileInfoHeader(info)
if err != nil {
return err
}
header.Name = strings.Replace(file, oldform, newform, -1)
header.Method = zip.Deflate
writer, err := zipWriter.CreateHeader(header)
if err != nil {
return err
}
if _, err = io.Copy(writer, zipfile); err != nil {
return err
}
}
return nil
}
调用:
ZipFiles(zipFileName, files, ".", ".")
注意:.表示的是根目录。需要放入压缩文件的几个文件在哪个目录,那么该函数的第3个参数就写什么,上面代码表示待压缩的文件在根目录,压缩文件(第4个参数)也将生成在根目录。
免费资源网 – https://freexyz.cn/
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)