protected String uploadToExternalPayloadStorage(
            ExternalPayloadStorage.PayloadType payloadType, byte[] payloadBytes, long payloadSize) {
        Validate.isTrue(
                payloadType.equals(ExternalPayloadStorage.PayloadType.WORKFLOW_INPUT)
                        || payloadType.equals(ExternalPayloadStorage.PayloadType.TASK_OUTPUT),
                "Payload type must be workflow input or task output");
        ExternalStorageLocation externalStorageLocation =
                payloadStorage.getLocation(ExternalPayloadStorage.Operation.WRITE, payloadType, "");
        payloadStorage.upload(
                externalStorageLocation.getUri(),
                new ByteArrayInputStream(payloadBytes),
                payloadSize);
        return externalStorageLocation.getPath();
    }
Uses the {@link PayloadStorage} for storing large payloads. Gets the uri for storing the
payload from the server and then uploads to this location

@param payloadType the {@link
    com.netflix.conductor.common.utils.ExternalPayloadStorage.PayloadType} to be uploaded
@param payloadBytes the byte array containing the payload
@param payloadSize the size of the payload
@return the path where the payload is stored in external storage
client/src/main/java/com/netflix/conductor/client/http/ClientBase.java