I was getting invalid MD5 error when trying to perform a multipart upload with Rclone.
Here is what a have found.
The function FromContentMD5 from minio/pkg/etag/etag.go expects a base64 encoded string but get a hexadecimal encoded one.
However, I have checked that Rclone is sending the correct Content-Md5 header (run it with args -vvv --dump=headers). I can also see the valid base64 encoded header in the Pydio log.
My fix:
if v[0] == "" {
return nil, errors.New("etag: content-md5 is set but contains no value")
}
if len(v[0]) == 32 {
h, err := hex.DecodeString(v[0])
if err == nil {
return ETag(h), nil
}
}
b, err := base64.StdEncoding.Strict().DecodeString(v[0])
Now I’m able to upload files successfully.
Additionally, I recommend using the –low-level-retries 1 flag to avoid slowdowns when performing operations.
@GwynethLlewelyn I think you might be interested in this topic.