aboutsummaryrefslogtreecommitdiff
path: root/other/java/client/src
diff options
context:
space:
mode:
authorkvtb <76634406+kvtb@users.noreply.github.com>2022-09-30 05:56:12 +0000
committerGitHub <noreply@github.com>2022-09-29 22:56:12 -0700
commit620be2be16ea6cf4b6f428f3334fa34035a88736 (patch)
treea771b66d568c89e9a07cc105a839a0ce1f7d25d4 /other/java/client/src
parent56c94cc08ec8d5dfbc9aace0c1931334ef79f4b4 (diff)
downloadseaweedfs-620be2be16ea6cf4b6f428f3334fa34035a88736.tar.xz
seaweedfs-620be2be16ea6cf4b6f428f3334fa34035a88736.zip
client-java: provide Content-MD5 when uploading chunks (#3761)
* client-java: provide Content-MD5 when uploading chunks * Update SeaweedWrite.java
Diffstat (limited to 'other/java/client/src')
-rw-r--r--other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java b/other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java
index df45dd3f2..48256a3e6 100644
--- a/other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java
+++ b/other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java
@@ -14,7 +14,9 @@ import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.SecureRandom;
+import java.security.MessageDigest;
import java.util.List;
+import java.util.Base64;
public class SeaweedWrite {
@@ -123,13 +125,20 @@ public class SeaweedWrite {
final byte[] bytes,
final long bytesOffset, final long bytesLength,
byte[] cipherKey) throws IOException {
+ MessageDigest md = null;
+ try {
+ md = MessageDigest.getInstance("MD5");
+ } catch (java.security.NoSuchAlgorithmException e) {
+ }
InputStream inputStream = null;
if (cipherKey == null || cipherKey.length == 0) {
+ md.update(bytes, (int) bytesOffset, (int) bytesLength);
inputStream = new ByteArrayInputStream(bytes, (int) bytesOffset, (int) bytesLength);
} else {
try {
byte[] encryptedBytes = SeaweedCipher.encrypt(bytes, (int) bytesOffset, (int) bytesLength, cipherKey);
+ md.update(encryptedBytes);
inputStream = new ByteArrayInputStream(encryptedBytes, 0, encryptedBytes.length);
} catch (Exception e) {
throw new IOException("fail to encrypt data", e);
@@ -140,6 +149,7 @@ public class SeaweedWrite {
if (auth != null && auth.length() != 0) {
post.addHeader("Authorization", "BEARER " + auth);
}
+ post.addHeader("Content-MD5", Base64.getEncoder().encodeToString(md.digest()));
post.setEntity(MultipartEntityBuilder.create()
.setMode(HttpMultipartMode.BROWSER_COMPATIBLE)