From 30d7ce77597690014d2a02577b4cd1bdd2ce286f Mon Sep 17 00:00:00 2001 From: zhengkunwang223 Date: Mon, 6 Mar 2023 18:12:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=87=E4=BB=B6=EF=BC=8C=E5=8D=95?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8B=E8=BD=BD=E7=9B=B4=E6=8E=A5=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=EF=BC=8C=E6=96=87=E4=BB=B6=E5=A4=B9=E6=88=96=E8=80=85?= =?UTF-8?q?=E5=A4=9A=E6=96=87=E4=BB=B6=E4=B8=8B=E8=BD=BD=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E5=8E=8B=E7=BC=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/dto/request/file.go | 7 +++-- backend/app/service/file.go | 29 ++++++++++--------- backend/i18n/lang/en.yaml | 1 + backend/i18n/lang/zh.yaml | 1 + .../host/file-management/download/index.vue | 15 ++-------- .../src/views/host/file-management/index.vue | 23 +++++++++++++-- 6 files changed, 44 insertions(+), 32 deletions(-) diff --git a/backend/app/dto/request/file.go b/backend/app/dto/request/file.go index eec6636dd..42581e7cb 100644 --- a/backend/app/dto/request/file.go +++ b/backend/app/dto/request/file.go @@ -71,9 +71,10 @@ type FileMove struct { } type FileDownload struct { - Paths []string `json:"paths" validate:"required"` - Type string `json:"type" validate:"required"` - Name string `json:"name" validate:"required"` + Paths []string `json:"paths" validate:"required"` + Type string `json:"type" validate:"required"` + Name string `json:"name" validate:"required"` + Compress bool `json:"compress" validate:"required"` } type DirSizeReq struct { diff --git a/backend/app/service/file.go b/backend/app/service/file.go index 47c14c020..dd798257d 100644 --- a/backend/app/service/file.go +++ b/backend/app/service/file.go @@ -38,8 +38,8 @@ func (f FileService) GetFileList(op request.FileOption) (response.FileInfo, erro func (f FileService) SearchUploadWithPage(req request.SearchUploadWithPage) (int64, interface{}, error) { var ( - files []response.UploadInfo - backDatas []response.UploadInfo + files []response.UploadInfo + backData []response.UploadInfo ) _ = filepath.Walk(req.Path, func(path string, info os.FileInfo, err error) error { @@ -57,14 +57,14 @@ func (f FileService) SearchUploadWithPage(req request.SearchUploadWithPage) (int }) total, start, end := len(files), (req.Page-1)*req.PageSize, req.Page*req.PageSize if start > total { - backDatas = make([]response.UploadInfo, 0) + backData = make([]response.UploadInfo, 0) } else { if end >= total { end = total } - backDatas = files[start:end] + backData = files[start:end] } - return int64(total), backDatas, nil + return int64(total), backData, nil } func (f FileService) GetFileTree(op request.FileOption) ([]response.FileTree, error) { @@ -216,15 +216,18 @@ func (f FileService) MvFile(m request.FileMove) error { } func (f FileService) FileDownload(d request.FileDownload) (string, error) { - tempPath := filepath.Join(os.TempDir(), fmt.Sprintf("%d", time.Now().UnixNano())) - if err := os.MkdirAll(tempPath, os.ModePerm); err != nil { - return "", err + filePath := d.Paths[0] + if d.Compress { + tempPath := filepath.Join(os.TempDir(), fmt.Sprintf("%d", time.Now().UnixNano())) + if err := os.MkdirAll(tempPath, os.ModePerm); err != nil { + return "", err + } + fo := files.NewFileOp() + if err := fo.Compress(d.Paths, tempPath, d.Name, files.CompressType(d.Type)); err != nil { + return "", err + } + filePath = filepath.Join(tempPath, d.Name) } - fo := files.NewFileOp() - if err := fo.Compress(d.Paths, tempPath, d.Name, files.CompressType(d.Type)); err != nil { - return "", err - } - filePath := filepath.Join(tempPath, d.Name) return filePath, nil } diff --git a/backend/i18n/lang/en.yaml b/backend/i18n/lang/en.yaml index 66ecf6b2c..3005cc621 100644 --- a/backend/i18n/lang/en.yaml +++ b/backend/i18n/lang/en.yaml @@ -24,6 +24,7 @@ ErrAppRequired: "{{ .detail }} app is required" ErrNotInstall: "App not installed" ErrPortInOtherApp: "{{ .port }} port already in use by {{ .apps }}" ErrDbUserNotValid: "Stock database, username and password do not match!" +ErrDockerComposeNotValid: "docker-compose file format error!" #file ErrFileCanNotRead: "File can not read" diff --git a/backend/i18n/lang/zh.yaml b/backend/i18n/lang/zh.yaml index 3e97902ec..defa4dc50 100644 --- a/backend/i18n/lang/zh.yaml +++ b/backend/i18n/lang/zh.yaml @@ -24,6 +24,7 @@ ErrAppRequired: "请先安装 {{ .detail }} 应用" ErrNotInstall: "应用未安装" ErrPortInOtherApp: "{{ .port }} 端口已被 {{ .apps }}占用!" ErrDbUserNotValid: "存量数据库,用户名密码不匹配!" +ErrDockerComposeNotValid: "docker-compose 文件格式错误" #file ErrFileCanNotRead: "此文件不支持预览" diff --git a/frontend/src/views/host/file-management/download/index.vue b/frontend/src/views/host/file-management/download/index.vue index c7eb124f5..24345c2f4 100644 --- a/frontend/src/views/host/file-management/download/index.vue +++ b/frontend/src/views/host/file-management/download/index.vue @@ -72,25 +72,13 @@ let addForm = ref({ paths: [] as string[], type: '', name: '', + compress: true, }); const extension = computed(() => { return CompressExtention[addForm.value.type]; }); -// const onOpen = () => { -// addForm.value = { -// type: 'zip', -// paths: props.paths, -// name: props.name, -// }; -// console.log(addForm); -// options.value = []; -// for (const t in CompressType) { -// options.value.push(CompressType[t]); -// } -// }; - const submit = async (formEl: FormInstance | undefined) => { if (!formEl) return; await formEl.validate((valid) => { @@ -121,6 +109,7 @@ const acceptParams = (props: DownloadProps) => { addForm.value.paths = props.paths; addForm.value.name = props.name; addForm.value.type = 'zip'; + addForm.value.compress = true; options.value = []; for (const t in CompressType) { options.value.push(CompressType[t]); diff --git a/frontend/src/views/host/file-management/index.vue b/frontend/src/views/host/file-management/index.vue index cbc018d5c..9584ecafc 100644 --- a/frontend/src/views/host/file-management/index.vue +++ b/frontend/src/views/host/file-management/index.vue @@ -146,7 +146,7 @@