MCPcopy Index your code
hub / github.com/TruthHun/BookStack / zip

Method zip

models/book.go:999–1059  ·  view source on GitHub ↗
(dir, zipFile string)

Source from the content-addressed store, hash-verified

997}
998
999func (m *Book) zip(dir, zipFile string) (err error) {
1000 // zip 压缩
1001
1002 var (
1003 d *os.File
1004 fw io.Writer
1005 fcont []byte
1006 fl []filetil.FileList
1007 )
1008
1009 if fl, err = filetil.ScanFiles(dir); err != nil {
1010 return
1011 }
1012
1013 os.Remove(zipFile)
1014 d, err = os.Create(zipFile)
1015 if err != nil {
1016 beego.Error(err)
1017 return
1018 }
1019 defer d.Close()
1020 zipWriter := zip.NewWriter(d)
1021 defer zipWriter.Close()
1022
1023 for _, file := range fl {
1024 if file.IsDir {
1025 continue
1026 }
1027
1028 info, errInfo := os.Stat(file.Path)
1029 if errInfo != nil {
1030 beego.Error(errInfo)
1031 continue
1032 }
1033
1034 header, errHeader := zip.FileInfoHeader(info)
1035 if errHeader != nil {
1036 beego.Error(errHeader)
1037 continue
1038 }
1039
1040 header.Method = zip.Deflate
1041 header.Name = strings.TrimLeft(strings.TrimPrefix(strings.ReplaceAll(file.Path, "\\", "/"), dir), "./")
1042
1043 fw, err = zipWriter.CreateHeader(header)
1044 if err != nil {
1045 beego.Error(err)
1046 return
1047 }
1048
1049 fcont, err = ioutil.ReadFile(file.Path)
1050 if err != nil {
1051 return
1052 }
1053
1054 if _, err = fw.Write(fcont); err != nil {
1055 return
1056 }

Callers 1

Export2MarkdownMethod · 0.95

Calls 1

CreateMethod · 0.45

Tested by

no test coverage detected