Mengzip Kandungan daripada Folder Tidak Termasuk Folder Root
Dalam Go, mengezip kandungan dalam direktori sambil mengecualikan folder akar boleh dicapai menggunakan zip .Penulis.
Isu Penerangan
Kod asal bertujuan untuk mengezip kandungan direktori ("dir1") ke dalam "dir1.zip". Walau bagaimanapun, selepas pengekstrakan, fail yang dizip mengekalkan struktur folder "dir1" sebagai akarnya. Matlamatnya adalah untuk menghapuskan folder akar semasa pengekstrakan.
Penyelesaian
Untuk mencapai ini, kita perlu mengubah suai medan pengepala.Nama dalam zip.Writer. Medan ini menentukan nama fail dalam arkib. Dalam kod asal, medan ditetapkan seperti berikut:
if baseDir != "" { header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source)) }
Kod ini memastikan bahawa nama fail termasuk baseDir ("dir1") dan laluan fail berbanding dengan direktori sumber ("path/dir1" ). Walau bagaimanapun, untuk mengalih keluar folder akar selepas pengekstrakan, kita perlu meninggalkan baseDir:
header.Name = strings.TrimPrefix(path, source)
Dengan pengubahsuaian ini, fail yang dizip akan berada terus di bawah akar arkib, dan mereka tidak akan mempunyai " folder dir1" sebagai akarnya selepas pengekstrakan.
Hasil
Dengan meninggalkan baseDir dari medan header.Name, kandungan direktori "dir1" akan dizip ke dalam "dir1.zip" tanpa folder akar. Ini membolehkan pengguna mengekstrak fail terus tanpa perlu menavigasi folder "dir1".
Atas ialah kandungan terperinci Bagaimana untuk Mengezip Kandungan Folder dalam Go Tanpa Termasuk Folder Root?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!