优化kit/zip

Signed-off-by: lixxxww <941403820@qq.com>
This commit is contained in:
lixxxww
2024-01-23 11:31:44 +00:00
committed by Gitee
parent e51f21edee
commit 731f8224b0
2 changed files with 106 additions and 0 deletions

45
kit/file/file.go Normal file
View File

@@ -0,0 +1,45 @@
package utilFile
import (
"io"
"mime/multipart"
"net/http"
"os"
)
// DownloadFile 会将url下载到本地文件它会在下载时写入而不是将整个文件加载到内存中。
func DownloadFile(url, filepath string) error {
// Get the data
resp, err := http.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
// Create the file
out, err := os.Create(filepath)
if err != nil {
return err
}
defer out.Close()
// Write the body to file
_, err = io.Copy(out, resp.Body)
return err
}
func SaveUploadedFile(file *multipart.FileHeader, dst string) error {
src, err := file.Open()
if err != nil {
return err
}
defer src.Close()
out, err := os.Create(dst)
if err != nil {
return err
}
defer out.Close()
_, err = io.Copy(out, src)
return err
}

61
kit/file/zipfiles.go Normal file
View File

@@ -0,0 +1,61 @@
package utilFile
import (
"archive/zip"
"io"
"os"
"strings"
)
func ZipFiles(filename string, files []string, oldForm, newForm string) error {
newZipFile, err := os.Create(filename)
if err != nil {
return err
}
defer newZipFile.Close()
zipWriter := zip.NewWriter(newZipFile)
defer zipWriter.Close()
for _, file := range files {
err = compressFile(file, oldForm, newForm, zipWriter)
if err != nil {
return err
}
}
return nil
}
func compressFile(file, oldForm, newForm string, zipWriter *zip.Writer) error {
zipFile, err := os.Open(file)
if err != nil {
return err
}
defer zipFile.Close()
info, err := zipFile.Stat()
if err != nil {
return err
}
header, err := zip.FileInfoHeader(info)
if err != nil {
return err
}
header.Name = strings.Replace(file, oldForm, newForm, -1)
header.Method = zip.Deflate
writer, err := zipWriter.CreateHeader(header)
if err != nil {
return err
}
_, err = io.Copy(writer, zipFile)
if err != nil {
return err
}
return nil
}