From 3a0119d3945ad45d8ce085647b4b7dd9fbd91c42 Mon Sep 17 00:00:00 2001 From: "liucheng.yao" Date: Thu, 13 Aug 2026 14:22:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=AD=E6=96=87=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- ufile-sample-java/pom.xml | 2 +- ufile/pom.xml | 2 +- ufile/ufile-client-java/pom.xml | 6 +- .../ufile/api/object/AppendObjectApi.java | 6 +- .../GenerateObjectPrivateUploadUrlApi.java | 2 +- .../object/GenerateObjectPrivateUrlApi.java | 9 +- .../object/GenerateObjectPublicUrlApi.java | 9 +- .../api/object/multi/UploadCopyPartApi.java | 12 +- .../auth/UfileObjectRemoteAuthorization.java | 4 + ufile/ufile-core/pom.xml | 4 +- .../java/cn/ucloud/ufile/util/Encoder.java | 1 + us3_maven_private.asc | 108 ++++++++++++++++++ us3_maven_public.asc | 52 +++++++++ 14 files changed, 191 insertions(+), 28 deletions(-) create mode 100644 us3_maven_private.asc create mode 100644 us3_maven_public.asc diff --git a/pom.xml b/pom.xml index 65bd87b..4aadc8b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ cn.ucloud.ufile ufile-sdk-java-root - 2.7.5 + 2.7.6 pom ufile-sdk-java (root) diff --git a/ufile-sample-java/pom.xml b/ufile-sample-java/pom.xml index 664b972..a6c7453 100644 --- a/ufile-sample-java/pom.xml +++ b/ufile-sample-java/pom.xml @@ -55,7 +55,7 @@ cn.ucloud.ufile ufile-client-java - 2.7.5 + 2.7.6 diff --git a/ufile/pom.xml b/ufile/pom.xml index 615c65f..209d25a 100644 --- a/ufile/pom.xml +++ b/ufile/pom.xml @@ -7,7 +7,7 @@ cn.ucloud.ufile ufile pom - 2.7.5 + 2.7.6 ufile-core diff --git a/ufile/ufile-client-java/pom.xml b/ufile/ufile-client-java/pom.xml index df52440..327692f 100644 --- a/ufile/ufile-client-java/pom.xml +++ b/ufile/ufile-client-java/pom.xml @@ -6,11 +6,11 @@ ufile cn.ucloud.ufile - 2.7.5 + 2.7.6 ufile-client-java - 2.7.5 + 2.7.6 ufile-client-java @@ -27,7 +27,7 @@ cn.ucloud.ufile ufile-core - 2.7.5 + 2.7.6 diff --git a/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/AppendObjectApi.java b/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/AppendObjectApi.java index cee6c2c..f188e71 100644 --- a/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/AppendObjectApi.java +++ b/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/AppendObjectApi.java @@ -184,10 +184,10 @@ protected void prepareData() throws UfileClientException { String date = dateFormat.format(new Date(System.currentTimeMillis())); PutStreamRequestBuilder builder = new PutStreamRequestBuilder(onProgressListener); - //keyName 进行了修改 - String keyName_tmp = keyName + "?append&" + builder.generateUrlQuery(query); + String queryString = builder.generateUrlQuery(query); + String keyName_tmp = keyName + "?append&" + queryString; builder.setBufferSize(bufferSize); - builder.baseUrl(generateFinalHost(bucketName, keyName_tmp)) + builder.baseUrl(generateFinalHost(bucketName, keyName) + "?append&" + queryString) .setConnTimeOut(connTimeOut).setReadTimeOut(readTimeOut).setWriteTimeOut(writeTimeOut) .header(headers) .addHeader("Content-Type", contentType) diff --git a/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/GenerateObjectPrivateUploadUrlApi.java b/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/GenerateObjectPrivateUploadUrlApi.java index 1fb973f..82e0f0c 100644 --- a/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/GenerateObjectPrivateUploadUrlApi.java +++ b/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/GenerateObjectPrivateUploadUrlApi.java @@ -330,6 +330,7 @@ protected void parameterValidat() throws UfileParamException { if (expiresDuration <= 0) throw new UfileParamException( "The required param 'expiresDuration' must > 0"); + } /** @@ -384,4 +385,3 @@ public interface CreatePrivateUploadUrlWithHeadersCallback { - diff --git a/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/GenerateObjectPrivateUrlApi.java b/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/GenerateObjectPrivateUrlApi.java index 0493bee..ad66199 100644 --- a/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/GenerateObjectPrivateUrlApi.java +++ b/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/GenerateObjectPrivateUrlApi.java @@ -14,7 +14,6 @@ import com.google.gson.JsonElement; import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; import java.util.List; @@ -168,12 +167,7 @@ public String createUrl() throws UfileClientException { } if (attachmentFileName != null && !attachmentFileName.isEmpty()) { - try { - attachmentFileName = Encoder.urlEncode(attachmentFileName, "UTF-8"); - builder.addParam(new Parameter("ufileattname", attachmentFileName)); - } catch (UnsupportedEncodingException e) { - throw new UfileClientException("Occur error during URLEncode attachmentFileName", e); - } + builder.addParam(new Parameter("ufileattname", attachmentFileName)); } @@ -258,5 +252,6 @@ protected void parameterValidat() throws UfileParamException { if (expiresDuration <= 0) throw new UfileParamException( "The required param 'expiresDuration' must > 0"); + } } diff --git a/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/GenerateObjectPublicUrlApi.java b/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/GenerateObjectPublicUrlApi.java index 9d43dd5..503bab1 100644 --- a/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/GenerateObjectPublicUrlApi.java +++ b/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/GenerateObjectPublicUrlApi.java @@ -8,7 +8,6 @@ import cn.ucloud.ufile.util.Parameter; import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; import java.util.List; /** @@ -98,12 +97,7 @@ public String createUrl() throws UfileClientException { .baseUrl(generateFinalHost(bucketName, keyName)); if (attachmentFileName != null && !attachmentFileName.isEmpty()) { - try { - attachmentFileName = Encoder.urlEncode(attachmentFileName, "UTF-8"); - builder.addParam(new Parameter("ufileattname", attachmentFileName)); - } catch (UnsupportedEncodingException e) { - throw new UfileClientException("Occur error during URLEncode attachmentFileName", e); - } + builder.addParam(new Parameter("ufileattname", attachmentFileName)); } String url = builder.generateGetUrl(builder.getBaseUrl(), builder.getParams()); @@ -152,5 +146,6 @@ protected void parameterValidat() throws UfileParamException { if (bucketName == null || bucketName.isEmpty()) throw new UfileRequiredParamNotFoundException( "The required param 'bucketName' can not be null or empty"); + } } diff --git a/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/multi/UploadCopyPartApi.java b/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/multi/UploadCopyPartApi.java index a4cbf46..e077b0f 100644 --- a/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/multi/UploadCopyPartApi.java +++ b/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/api/object/multi/UploadCopyPartApi.java @@ -105,13 +105,21 @@ protected void prepareData() throws UfileClientException { String date = dateFormat.format(new Date(System.currentTimeMillis())); String xUfileCopySource = String.format("/%s/%s", sourceBucketName, sourceObjectName); + String encodedXUfileCopySource; + try { + encodedXUfileCopySource = String.format("/%s/%s", + Encoder.urlEncode(sourceBucketName, "UTF-8"), + Encoder.urlEncode(sourceObjectName, "UTF-8")); + } catch (java.io.UnsupportedEncodingException e) { + throw new UfileClientException("Occur error during URLEncode copy source", e); + } String xUfileCopySourceRange = String.format("bytes=%d-%d", rangeStart, rangeEnd); PutJsonRequestBuilder builder = new PutJsonRequestBuilder(); builder.baseUrl(builder.generateGetUrl(generateFinalHost(info.getBucket(), info.getKeyName()), query)) - .addHeader("Accpet", "*/*") + .addHeader("Accept", "*/*") .addHeader("Date", date) - .addHeader("X-Ufile-Copy-Source", xUfileCopySource) + .addHeader("X-Ufile-Copy-Source", encodedXUfileCopySource) .addHeader("X-Ufile-Copy-Source-Range", xUfileCopySourceRange); String authorization = authorizer.authorization((ObjectOptAuthParam) new ObjectOptAuthParam(HttpMethod.PUT, info.getBucket(), info.getKeyName(), diff --git a/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/auth/UfileObjectRemoteAuthorization.java b/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/auth/UfileObjectRemoteAuthorization.java index c935f15..8ad09c0 100644 --- a/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/auth/UfileObjectRemoteAuthorization.java +++ b/ufile/ufile-client-java/src/main/java/cn/ucloud/ufile/auth/UfileObjectRemoteAuthorization.java @@ -39,6 +39,10 @@ public String authorization(ObjectOptAuthParam param) { json.addProperty("content_type", param.getContentType()); json.addProperty("content_md5", param.getContentMD5()); json.addProperty("date", param.getDate()); + if (param.getXUFileCopySource() != null) + json.addProperty("x_ufile_copy_source", param.getXUFileCopySource()); + if (param.getXUFileCopySourceRange() != null) + json.addProperty("x_ufile_copy_source_range", param.getXUFileCopySourceRange()); if (param.getOptional() != null) json.addProperty("optional", param.getOptional().toString()); if (param.getPutPolicy() != null && param.getPutPolicy().getPolicy() != null) diff --git a/ufile/ufile-core/pom.xml b/ufile/ufile-core/pom.xml index d0b52fa..7a70d0a 100644 --- a/ufile/ufile-core/pom.xml +++ b/ufile/ufile-core/pom.xml @@ -6,11 +6,11 @@ cn.ucloud.ufile ufile - 2.7.5 + 2.7.6 ufile-core - 2.7.5 + 2.7.6 ufile-core diff --git a/ufile/ufile-core/src/main/java/cn/ucloud/ufile/util/Encoder.java b/ufile/ufile-core/src/main/java/cn/ucloud/ufile/util/Encoder.java index 768c053..18d494e 100644 --- a/ufile/ufile-core/src/main/java/cn/ucloud/ufile/util/Encoder.java +++ b/ufile/ufile-core/src/main/java/cn/ucloud/ufile/util/Encoder.java @@ -103,4 +103,5 @@ public static String urlEncodePath(String path, String enc) throws UnsupportedEn } return sb.toString(); } + } diff --git a/us3_maven_private.asc b/us3_maven_private.asc new file mode 100644 index 0000000..ae45698 --- /dev/null +++ b/us3_maven_private.asc @@ -0,0 +1,108 @@ +-----BEGIN PGP PRIVATE KEY BLOCK----- + +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 +mwW/Nmh5WP2sSfGYak6pWxtNzlJYY0xIxg== +=B/sU +-----END PGP PRIVATE KEY BLOCK----- diff --git a/us3_maven_public.asc b/us3_maven_public.asc new file mode 100644 index 0000000..c878698 --- /dev/null +++ b/us3_maven_public.asc @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=KF+v +-----END PGP PUBLIC KEY BLOCK-----