문제: 폴더 내의 파일을 압축하면 루트가 포함된 구조가 추출됩니다. 폴더, 원하는 결과는 루트 폴더 없이 파일을 추출하는 것입니다.
코드 시도:
다음 코드는 디렉터리 구조를 압축하려는 시도입니다.
func Zipit(source, target string) error { zipfile, err := os.Create(target) ... header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source)) ... }
문제 해결:
제공된 코드에서 , 문제는 baseDir이 header.Name에 추가되는 줄에 있습니다. 추출된 구조에서 루트 폴더를 제외하려면 파일 이름에서 baseDir을 제거하십시오.
해결책:
다음 줄을 바꾸십시오:
header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
다음과 함께:
header.Name = strings.TrimPrefix(path, source)
대안 접근 방식:
헤더 이름을 수동으로 수정하는 대신 다음 대체 접근 방식을 사용하여 추출 중에 루트 폴더를 제외할 수도 있습니다.
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 } ... })
위 내용은 아카이브에 루트 폴더를 포함하지 않고 폴더 내의 파일을 압축하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!