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
Lepaskan: 2024-11-29 03:25:12
asal
906 orang telah melayarinya

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))
    ...
}
Salin selepas log masuk

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))
Salin selepas log masuk

dengan:

header.Name = strings.TrimPrefix(path, source)
Salin selepas log masuk

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
    }
    ...
})
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan