Comprime el contenido dentro de la carpeta sin la carpeta raíz
Quiero comprimir algún directorio dentro del contenido en un archivo zip
p.ej. supongo que tengo esta estructura de directorios
dir1
file1.html
file2.go
Ahora quiero comprimirlo endir1.zip
que esta funcionando
cuando lo extraigo tengo la misma estructura ... Quiero comprimir elcontenido dentro que cuando lo descomprimo obtengo los archivos dentro sin la carpeta 'dir1' como root después de extraerlo
file1.html
file2.go
Intento jugar con la ruta con este código y no funciona. ¿Alguna idea de lo que extraño aquí?
he intentado
func Zipit(source, target string) error {
zipfile, err := os.Create(target)
if err != nil {
return err
}
defer zipfile.Close()
archive := zip.NewWriter(zipfile)
defer archive.Close()
info, err := os.Stat(source)
if err != nil {
return nil
}
var baseDir string
if info.IsDir() {
baseDir = filepath.Base(source)
}
filepath.Walk(source, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
header, err := zip.FileInfoHeader(info)
if err != nil {
return err
}
if baseDir != "" {
header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
}
if info.IsDir() {
header.Name += "/"
} else {
header.Method = zip.Deflate
}
writer, err := archive.CreateHeader(header)
if err != nil {
return err
}
if info.IsDir() {
return nil
}
file, err := os.Open(path)
if err != nil {
return err
}
defer file.Close()
_, err = io.Copy(writer, file)
return err
})
return err
}
dir.Zipit("path/dir1" +"/", "test"+".zip")
¿O tal vez hay una manera más simple en GO de lograr esto?