| 64 | } |
| 65 | |
| 66 | func FilesFromArchive(format string, filePath string) (fileList []file.FormFile, unpackDir string, err error) { |
| 67 | // set unpack dir |
| 68 | unpackDir = fmt.Sprintf("%s/temp/%d%d", conf.PATH_DATA, rand.Int(), rand.Int()) |
| 69 | if merr := os.Mkdir(unpackDir, 0777); merr != nil { |
| 70 | logger.Error("err:@node_unpack: " + err.Error()) |
| 71 | } |
| 72 | |
| 73 | // magic to unpack archive |
| 74 | if format == "zip" { |
| 75 | fileList, err = unZip(filePath, unpackDir) |
| 76 | } else if format == "tar" { |
| 77 | fileList, err = unTar(filePath, unpackDir, "") |
| 78 | } else if format == "tar.gz" { |
| 79 | fileList, err = unTar(filePath, unpackDir, "gzip") |
| 80 | } else if format == "tar.bz2" { |
| 81 | fileList, err = unTar(filePath, unpackDir, "bzip2") |
| 82 | } else { |
| 83 | return nil, unpackDir, errors.New("invalid archive format. must be one of: " + ArchiveList) |
| 84 | } |
| 85 | return |
| 86 | } |
| 87 | |
| 88 | func unTar(filePath string, unpackDir string, compression string) (fileList []file.FormFile, err error) { |
| 89 | // get file handle |