Архивирование папки с изображениями возвращает пустые файлы - PullRequest
1 голос
/ 27 мая 2020

Я пытаюсь заархивировать папку, содержащую файлы, используя следующий код

func zipFolder(source string) error {
    target := "uniq.zip"
    zipfile, err := os.Create(target)
    if err != nil {
        return err
    }
    defer zipfile.Close()
    archive := zip.NewWriter(zipfile)
    defer archive.Close()

    info, err := os.Stat(source)
    if err != nil {
        return nil
    }

    var baseDir string
    if info.IsDir() {
        baseDir = filepath.Base(source)
    }

    filepath.Walk(source, func(path string, info os.FileInfo, err error) error {
        if err != nil {
            return err
        }
        header, err := zip.FileInfoHeader(info)
        if err != nil {
            return err
        }
        if baseDir != "" {
            header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
        }
        if info.IsDir() {
            header.Name += "/"
        } else {
            header.Method = zip.Store
        }
        writer, err := archive.CreateHeader(header)
        if err != nil {
            return err
        }
        if info.IsDir() {
            return nil
        }
        file, err := os.Open(path)
        if err != nil {
            return err
        }
        defer file.Close()
        _, err = io.Copy(writer, file)
        return err
    })

    return err
}

Это успешно создает zip, но когда я распаковываю его (я использую ma c), сжатый файл имеет 0 байт без содержимого. Есть идеи, что я здесь делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...