From a3cb8be08feda7b0581153233fa7dfb8c71a1a17 Mon Sep 17 00:00:00 2001 From: zhengkunwang223 <31820853+zhengkunwang223@users.noreply.github.com> Date: Wed, 22 Mar 2023 18:34:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E9=94=99=E8=AF=AF=E5=A4=84=E7=90=86=20(#370)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/api/v1/file.go | 21 +++++++++++-------- backend/constant/errs.go | 1 + backend/cron/job/ssl.go | 3 --- backend/i18n/lang/en.yaml | 1 + backend/i18n/lang/zh.yaml | 1 + frontend/src/components/upload/index.vue | 1 + frontend/src/layout/layout-content.vue | 6 +++++- .../host/file-management/upload/index.vue | 1 + 8 files changed, 22 insertions(+), 13 deletions(-) diff --git a/backend/app/api/v1/file.go b/backend/app/api/v1/file.go index eb3eb7f66..3bfcb3662 100644 --- a/backend/app/api/v1/file.go +++ b/backend/app/api/v1/file.go @@ -578,13 +578,16 @@ func (b *BaseApi) UploadChunkFiles(c *gin.Context) { } fileOp := files.NewFileOp() - if err := fileOp.CreateDir("uploads", 0755); err != nil { - helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err) - return + tmpDir := path.Join(global.CONF.System.TmpDir, "upload") + if !fileOp.Stat(tmpDir) { + if err := fileOp.CreateDir(tmpDir, 0755); err != nil { + helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err) + return + } } - //fileID := uuid.New().String() + filename := c.PostForm("filename") - fileDir := filepath.Join(global.CONF.System.DataDir, "upload", filename) + fileDir := filepath.Join(tmpDir, filename) _ = os.MkdirAll(fileDir, 0755) filePath := filepath.Join(fileDir, filename) @@ -594,25 +597,25 @@ func (b *BaseApi) UploadChunkFiles(c *gin.Context) { helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err) return } - emptyFile.Close() + defer emptyFile.Close() chunkData, err := ioutil.ReadAll(uploadFile) if err != nil { - helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err) + helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrFileUpload, err) return } chunkPath := filepath.Join(fileDir, fmt.Sprintf("%s.%d", filename, chunkIndex)) err = ioutil.WriteFile(chunkPath, chunkData, 0644) if err != nil { - helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err) + helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrFileUpload, err) return } if chunkIndex+1 == chunkCount { err = mergeChunks(filename, fileDir, c.PostForm("path"), chunkCount) if err != nil { - helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrAppDelete, err) + helper.ErrorWithDetail(c, constant.CodeErrInternalServer, constant.ErrFileUpload, err) return } helper.SuccessWithData(c, true) diff --git a/backend/constant/errs.go b/backend/constant/errs.go index 05679e8d6..c87c5ed00 100644 --- a/backend/constant/errs.go +++ b/backend/constant/errs.go @@ -84,6 +84,7 @@ var ( ErrMovePathFailed = "ErrMovePathFailed" ErrLinkPathNotFound = "ErrLinkPathNotFound" ErrFileIsExit = "ErrFileIsExit" + ErrFileUpload = "ErrFileUpload" ) //mysql diff --git a/backend/cron/job/ssl.go b/backend/cron/job/ssl.go index c5d122d88..044b60991 100644 --- a/backend/cron/job/ssl.go +++ b/backend/cron/job/ssl.go @@ -27,14 +27,11 @@ func (ssl *ssl) Run() { } expireDate, _ := time.ParseInLocation(constant.DateTimeLayout, s.ExpireDate.String(), time.Now().Location()) sum := expireDate.Sub(now) - global.LOG.Info(expireDate) - global.LOG.Info(sum.Hours()) if sum.Hours() < 720 { if err := sslService.Renew(s.ID); err != nil { global.LOG.Errorf("renew doamin [%s] ssl failed err:%s", s.PrimaryDomain, err.Error()) } } } - global.LOG.Info("ssl renew cron job end...") } diff --git a/backend/i18n/lang/en.yaml b/backend/i18n/lang/en.yaml index 7636cbfa9..dc9a4c41a 100644 --- a/backend/i18n/lang/en.yaml +++ b/backend/i18n/lang/en.yaml @@ -35,6 +35,7 @@ ErrPathNotFound: "Path is not found" ErrMovePathFailed: "The target path cannot contain the original path!" ErrLinkPathNotFound: "Target path does not exist!" ErrFileIsExit: "File already exists!" +ErrFileUpload: "Failed to upload file" #website ErrDomainIsExist: "Domain is already exist" diff --git a/backend/i18n/lang/zh.yaml b/backend/i18n/lang/zh.yaml index f8aa6d698..62b34afb6 100644 --- a/backend/i18n/lang/zh.yaml +++ b/backend/i18n/lang/zh.yaml @@ -35,6 +35,7 @@ ErrPathNotFound: "目录不存在" ErrMovePathFailed: "目标路径不能包含原路径!" ErrLinkPathNotFound: "目标路径不存在!" ErrFileIsExit: "文件已存在!" +ErrFileUpload: "上传文件失败" #website ErrDomainIsExist: "域名已存在" diff --git a/frontend/src/components/upload/index.vue b/frontend/src/components/upload/index.vue index 2d9e0233e..205052370 100644 --- a/frontend/src/components/upload/index.vue +++ b/frontend/src/components/upload/index.vue @@ -251,6 +251,7 @@ const submitUpload = async (file: any) => { uploadedChunkCount++; } catch (error) { isUpload.value = false; + break; } if (uploadedChunkCount == chunkCount) { isUpload.value = false; diff --git a/frontend/src/layout/layout-content.vue b/frontend/src/layout/layout-content.vue index 7f73876d8..c4582aa47 100644 --- a/frontend/src/layout/layout-content.vue +++ b/frontend/src/layout/layout-content.vue @@ -54,7 +54,7 @@
-
+
@@ -133,4 +133,8 @@ const showBack = computed(() => { .main-box { position: relative; } + +.main-content { + margin-top: 20px; +} diff --git a/frontend/src/views/host/file-management/upload/index.vue b/frontend/src/views/host/file-management/upload/index.vue index 0cac30cbc..2afcbc5cb 100644 --- a/frontend/src/views/host/file-management/upload/index.vue +++ b/frontend/src/views/host/file-management/upload/index.vue @@ -110,6 +110,7 @@ const submit = async () => { uploadedChunkCount++; } catch (error) { loading.value = false; + break; } if (uploadedChunkCount == chunkCount) { loading.value = false;