Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Zip Fail Di Dalam Folder Tanpa Termasuk Folder Root dalam Arkib?

Bagaimana untuk Zip Fail Di Dalam Folder Tanpa Termasuk Folder Root dalam Arkib?

Susan Sarandon
Susan Sarandonasal
2024-11-29 03:25:12990semak imbas

How to Zip Files Inside a Folder Without Including the Root Folder in the Archive?

Mengzip Kandungan Di Dalam Folder Tanpa Termasuk Folder Root

Masalah: Mengezip fail dalam folder menghasilkan struktur yang diekstrak yang merangkumi akar folder, sedangkan hasil yang diinginkan adalah untuk mengekstrak fail tanpa akar folder.

Percubaan Kod:

Kod berikut ialah percubaan untuk mengezip struktur direktori:

func Zipit(source, target string) error {
    zipfile, err := os.Create(target)
    ...
    header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
    ...
}

Penyelesaian masalah:

Dalam kod yang disediakan, isunya terletak pada baris di mana baseDir ditambahkan pada tajuk.Nama. Untuk mengecualikan folder akar daripada struktur yang diekstrak, alih keluar baseDir daripada nama fail.

Penyelesaian:

Gantikan baris berikut:

header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))

dengan:

header.Name = strings.TrimPrefix(path, source)

Alternatif Pendekatan:

Daripada mengubah suai nama pengepala secara manual, anda juga boleh menggunakan pendekatan alternatif berikut untuk mengecualikan folder akar semasa pengekstrakan:

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
    }
    ...
})

Atas ialah kandungan terperinci Bagaimana untuk Zip Fail Di Dalam Folder Tanpa Termasuk Folder Root dalam Arkib?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn