golang 打包文件成zip,并提供下载

压缩文件为zip需要用到 "archive/zip"这个包。
首先使用os.Create创建一个名为aaa.zip的文件。

	zipFile, err := os.Create("aaa.zip")

接着使用zip.NewWriter来创建一个写入的参数。

	zipWriter := zip.NewWriter(zipFile)
	defer zipWriter.Close()

然后遍历你想要压缩的文件,将所有的内容复制到zip文件里

	err = filepath.Walk(dirPath, func(path string, info os.FileInfo, err error) error {
		if err != nil {
			return err
		}
	
		header, err := zip.FileInfoHeader(info)
		if err != nil {
			return err
		}
		relativePath, err := filepath.Rel(dirPath, path)
		if err != nil {
			return err
		}
		header.Name = relativePath
		if info.IsDir() {
			header.Name += "/"
		}

		writer, err := zipWriter.CreateHeader(header)
		if err != nil {
			return err
		}

		if !info.IsDir() {
			file, err := os.Open(path)
			if err != nil {
				return err
			}
			defer file.Close()

			_, err = io.Copy(writer, file)
			if err != nil {
				return err
			}
		}

		return nil
	})

你可能感兴趣的:(golang,golang,开发语言,后端)