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)
}
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于将txt文件转换为xml和excel文件,您可以使用Go语言的一些库来实现。以下是一个简单的示例,使用`encoding/xml`和`github.com/tealeg/xlsx`库来完成转换: 首先,您需要安装所需的库。在命令行中执行以下命令: ``` go get encoding/xml go get github.com/tealeg/xlsx ``` 接下来,您可以使用以下代码将txt文件转换为xml文件: ```go package main import ( "encoding/xml" "fmt" "io/ioutil" "os" ) type Item struct { XMLName xml.Name `xml:"item"` Text string `xml:",chardata"` } type Items struct { XMLName xml.Name `xml:"items"` Items []Item `xml:"item"` } func main() { // 读取txt文件内容 txtData, err := ioutil.ReadFile("input.txt") if err != nil { fmt.Println("读取txt文件失败:", err) return } // 创建Items结构体并填充数据 items := Items{} items.Items = append(items.Items, Item{Text: string(txtData)}) // 将Items结构体转换为xml格式 xmlData, err := xml.MarshalIndent(items, "", " ") if err != nil { fmt.Println("转换为xml失败:", err) return } // 将xml数据写入文件 err = ioutil.WriteFile("output.xml", xmlData, 0644) if err != nil { fmt.Println("写入xml文件失败:", err) return } fmt.Println("txt文件已成功转换为xml文件.") } ``` 将上述代码保存为`txt2xml.go`文件并执行`go run txt2xml.go`,即可将`input.txt`文件转换为`output.xml`文件。 接下来,您可以使用以下代码将txt文件转换为excel文件: ```go package main import ( "fmt" "github.com/tealeg/xlsx" "io/ioutil" ) func main() { // 读取txt文件内容 txtData, err := ioutil.ReadFile("input.txt") if err != nil { fmt.Println("读取txt文件失败:", err) return } // 创建新的xlsx文件 file := xlsx.NewFile() sheet, err := file.AddSheet("Sheet1") if err != nil { fmt.Println("创建xlsx文件失败:", err) return } // 在第一行第一列添加txt数据 cell := sheet.Cell(0, 0) cell.Value = string(txtData) // 保存xlsx文件 err = file.Save("output.xlsx") if err != nil { fmt.Println("保存xlsx文件失败:", err) return } fmt.Println("txt文件已成功转换为excel文件.") } ``` 将上述代码保存为`txt2excel.go`文件并执行`go run txt2excel.go`,即可将`input.txt`文件转换为`output.xlsx`文件。 请确保在运行代码之前,将实际的txt文件命名为`input.txt`并与代码文件放在同一目录下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值