If you pass null into percentEscape it throws a NullPointerException. This happens when a blob has no filename.
java.lang.NullPointerException: null
at org.nuxeo.common.utils.RFC2231.percentEscape(RFC2231.java:54) ~[nuxeo-common-10.3-SNAPSHOT.jar:?]
at org.nuxeo.common.utils.RFC2231.encodeContentDisposition(RFC2231.java:94) ~[nuxeo-common-10.3-SNAPSHOT.jar:?]
at org.nuxeo.ecm.blob.AbstractCloudBinaryManager.getContentDispositionHeader(AbstractCloudBinaryManager.java:245) ~[nuxeo-core-binarymanager-common-10.3-SNAPSHOT.jar:?]
at org.nuxeo.ecm.core.storage.sql.S3BinaryManager.getRemoteUri(S3BinaryManager.java:678) ~[nuxeo-core-binarymanager-s3-10.3-SNAPSHOT.jar:?]
at org.nuxeo.ecm.blob.AbstractCloudBinaryManager.getURI(AbstractCloudBinaryManager.java:174) ~[nuxeo-core-binarymanager-common-10.3-SNAPSHOT.jar:?]