From c7e4c91932ca150f87ed90b999daf183ac39e760 Mon Sep 17 00:00:00 2001 From: longjuan <769022681@qq.com> Date: Mon, 19 Dec 2022 21:26:47 +0800 Subject: [PATCH 1/5] fix: MediaType is always application/octet stream --- .../run/halo/s3os/S3OsAttachmentHandler.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/run/halo/s3os/S3OsAttachmentHandler.java b/src/main/java/run/halo/s3os/S3OsAttachmentHandler.java index 4e532ae..8c5eb0c 100644 --- a/src/main/java/run/halo/s3os/S3OsAttachmentHandler.java +++ b/src/main/java/run/halo/s3os/S3OsAttachmentHandler.java @@ -14,6 +14,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.pf4j.Extension; import org.springframework.core.io.buffer.DataBufferUtils; +import org.springframework.http.MediaType; +import org.springframework.http.MediaTypeFactory; import org.springframework.web.util.UriUtils; import reactor.core.Exceptions; import reactor.core.publisher.Mono; @@ -148,7 +150,8 @@ public class S3OsAttachmentHandler implements AttachmentHandler { return Mono.fromCallable(() -> { var client = buildOsClient(properties); // build object name - var objectName = properties.getObjectName(uploadContext.file().filename()); + var originFilename = uploadContext.file().filename(); + var objectName = properties.getObjectName(originFilename); var pos = new PipedOutputStream(); var pis = new PipedInputStream(pos); @@ -163,11 +166,14 @@ public class S3OsAttachmentHandler implements AttachmentHandler { }).subscribe(DataBufferUtils.releaseConsumer()); final var bucket = properties.getBucket(); - log.info("Uploading {} into S3ObjectStorage {}/{}/{}", uploadContext.file().filename(), - properties.getEndpoint(), bucket, objectName); - + var metadata = new ObjectMetadata(); + var contentType = MediaTypeFactory.getMediaType(originFilename) + .orElse(MediaType.APPLICATION_OCTET_STREAM).toString(); + metadata.setContentType(contentType); var request = new PutObjectRequest(bucket, objectName, pis, - new ObjectMetadata()); + metadata); + log.info("Uploading {} into S3ObjectStorage {}/{}/{}", originFilename, + properties.getEndpoint(), bucket, objectName); return ossExecute(() -> { var result = client.putObject(request); From dc49669b7193970dfb779f93dce43a85956ebcf2 Mon Sep 17 00:00:00 2001 From: longjuan <769022681@qq.com> Date: Mon, 19 Dec 2022 21:30:52 +0800 Subject: [PATCH 2/5] delete the unimplemented function of restriction extensions --- src/main/java/run/halo/s3os/S3OsProperties.java | 1 - src/main/resources/extensions/policy-template-s3os.yaml | 4 ---- 2 files changed, 5 deletions(-) diff --git a/src/main/java/run/halo/s3os/S3OsProperties.java b/src/main/java/run/halo/s3os/S3OsProperties.java index 05df704..a45ccbe 100644 --- a/src/main/java/run/halo/s3os/S3OsProperties.java +++ b/src/main/java/run/halo/s3os/S3OsProperties.java @@ -28,7 +28,6 @@ class S3OsProperties { */ private String domain; - private String allowExtensions; private String region = "Auto"; diff --git a/src/main/resources/extensions/policy-template-s3os.yaml b/src/main/resources/extensions/policy-template-s3os.yaml index 8d2551a..22d0d43 100644 --- a/src/main/resources/extensions/policy-template-s3os.yaml +++ b/src/main/resources/extensions/policy-template-s3os.yaml @@ -62,7 +62,3 @@ spec: label: 绑定域名(CDN域名) placeholder: 如不设置,那么将使用 Bucket + EndPoint 作为域名 help: 协议头请在上方设置,此处无需以"http://"或"https://"开头,系统会自动拼接 - - $formkit: textarea - name: allow_extensions - label: 允许上传的文件类型 - placeholder: 使用半角逗号分隔 From e9e9b327fe6eefce9fa744f27ef5dbbf6311d9fe Mon Sep 17 00:00:00 2001 From: longjuan <769022681@qq.com> Date: Mon, 19 Dec 2022 21:40:55 +0800 Subject: [PATCH 3/5] add endpoint protocol help tips --- src/main/resources/extensions/policy-template-s3os.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/extensions/policy-template-s3os.yaml b/src/main/resources/extensions/policy-template-s3os.yaml index 22d0d43..f16736d 100644 --- a/src/main/resources/extensions/policy-template-s3os.yaml +++ b/src/main/resources/extensions/policy-template-s3os.yaml @@ -31,6 +31,7 @@ spec: name: endpoint label: EndPoint validation: required + help: 协议头请在上方设置,此处无需以"http://"或"https://"开头,系统会自动拼接 - $formkit: password name: accessKey label: Access Key From 79c94a29a90b89dd95b75f89914bd2fc037b67dd Mon Sep 17 00:00:00 2001 From: longjuan <769022681@qq.com> Date: Mon, 19 Dec 2022 21:41:08 +0800 Subject: [PATCH 4/5] Upgrade version to 1.1.1 --- gradle.properties | 2 +- src/main/resources/plugin.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 191b2b0..c6d0f18 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=1.1.0-SNAPSHOT +version=1.1.1-SNAPSHOT diff --git a/src/main/resources/plugin.yaml b/src/main/resources/plugin.yaml index 0084efd..efd74ca 100644 --- a/src/main/resources/plugin.yaml +++ b/src/main/resources/plugin.yaml @@ -4,7 +4,7 @@ metadata: name: PluginS3ObjectStorage spec: enabled: true - version: 1.1.0 + version: 1.1.1 requires: ">=2.0.0" author: name: longjuan From 5da0fae2b48866cff0e26e02776c277cce6a91ab Mon Sep 17 00:00:00 2001 From: longjuan <769022681@qq.com> Date: Mon, 19 Dec 2022 21:51:42 +0800 Subject: [PATCH 5/5] Adjust Formatting --- src/main/java/run/halo/s3os/S3OsAttachmentHandler.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/run/halo/s3os/S3OsAttachmentHandler.java b/src/main/java/run/halo/s3os/S3OsAttachmentHandler.java index 8c5eb0c..be4128d 100644 --- a/src/main/java/run/halo/s3os/S3OsAttachmentHandler.java +++ b/src/main/java/run/halo/s3os/S3OsAttachmentHandler.java @@ -170,8 +170,7 @@ public class S3OsAttachmentHandler implements AttachmentHandler { var contentType = MediaTypeFactory.getMediaType(originFilename) .orElse(MediaType.APPLICATION_OCTET_STREAM).toString(); metadata.setContentType(contentType); - var request = new PutObjectRequest(bucket, objectName, pis, - metadata); + var request = new PutObjectRequest(bucket, objectName, pis, metadata); log.info("Uploading {} into S3ObjectStorage {}/{}/{}", originFilename, properties.getEndpoint(), bucket, objectName);