Skip to content

Instantly share code, notes, and snippets.

@scorphus
Last active August 29, 2015 14:04
Show Gist options
  • Save scorphus/59e1ba1af220fc0aaa3b to your computer and use it in GitHub Desktop.
Save scorphus/59e1ba1af220fc0aaa3b to your computer and use it in GitHub Desktop.
Unzip multipart zipfile and return a slice [file_name]file_content
func UnzipMultipartFile(f *multipart.FileHeader) (map[string]*bytes.Buffer, error) {
file, err := f.Open()
if err != nil {
return nil, err
}
defer file.Close()
size, err := file.Seek(0, 2)
if err != nil {
return nil, err
}
r, err := zip.NewReader(file, size)
if err != nil {
return nil, err
}
files := make(map[string]*bytes.Buffer, len(r.File))
for _, f := range r.File {
rc, err := f.Open()
if err != nil {
return nil, err
}
files[f.Name] = new(bytes.Buffer)
_, err = io.Copy(files[f.Name], rc)
if err != nil {
return nil, err
}
rc.Close()
}
return files, nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment