Problema: Archives dentro de una carpeta da como resultado una estructura extraída que incluye la raíz carpeta, mientras que el resultado deseado es extraer los archivos sin la carpeta root.
Intento:
El siguiente código es un intento de cerrar la estructura del directorio:
func Zipit(source, target string) error { zipfile, err := os.Create(target) ... header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source)) ... }
solucionamiento de problemas:
En el código proporcionado, el problema se encuentra en la línea donde se agrega el basado al encabezado.name. Para excluir la carpeta raíz de la estructura extraída, elimine el basado del nombre de archivo.
SOLUCIÓN:
reemplace la siguiente línea:
header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
con:
header.Name = strings.TrimPrefix(path, source)
enfoques alternativos:
En lugar de modificar manualmente el nombre del encabezado, también puede usar el siguiente enfoque alternativo para excluir la carpeta raíz durante Extracción:
walker := filepath.Walk(source, func(path string, info os.FileInfo, err error) error { // Ignore the root directory if info.IsDir() && path == source { return filepath.SkipDir } ... })
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3