From 88f4e68e253469777a32cf0363264b30b1f86522 Mon Sep 17 00:00:00 2001 From: Aldino Kemal Date: Wed, 5 Feb 2025 05:08:58 +0700 Subject: [PATCH] fix: improve image upload validation and handling - Add URL validation for image URL in backend - Enhance frontend image upload logic to handle optional file and URL inputs - Remove debug print statement in send validation --- src/validations/send_validation.go | 7 +++++-- src/views/components/SendImage.js | 12 ++++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/validations/send_validation.go b/src/validations/send_validation.go index db535a8..9304faf 100644 --- a/src/validations/send_validation.go +++ b/src/validations/send_validation.go @@ -45,8 +45,6 @@ func ValidateSendImage(ctx context.Context, request domainSend.ImageRequest) err "image/png": true, } - fmt.Println(request.Image.Header.Get("Content-Type")) - if !availableMimes[request.Image.Header.Get("Content-Type")] { return pkgError.ValidationError("your image is not allowed. please use jpg/jpeg/png") } @@ -56,6 +54,11 @@ func ValidateSendImage(ctx context.Context, request domainSend.ImageRequest) err if *request.ImageURL == "" { return pkgError.ValidationError("ImageURL cannot be empty") } + + err := validation.Validate(*request.ImageURL, is.URL) + if err != nil { + return pkgError.ValidationError("ImageURL must be a valid URL") + } } return nil diff --git a/src/views/components/SendImage.js b/src/views/components/SendImage.js index 4fbe6d5..0827842 100644 --- a/src/views/components/SendImage.js +++ b/src/views/components/SendImage.js @@ -66,8 +66,16 @@ export default { payload.append("view_once", this.view_once) payload.append("compress", this.compress) payload.append("caption", this.caption) - payload.append('image', $("#file_image")[0].files[0]) - payload.append('image_url', this.image_url) + + const fileInput = $("#file_image"); + if (fileInput.length > 0 && fileInput[0].files.length > 0) { + const file = fileInput[0].files[0]; + payload.append('image', file); + } + if (this.image_url) { + payload.append('image_url', this.image_url) + } + let response = await window.http.post(`/send/image`, payload) this.handleReset(); return response.data.message;