---
title: Configure the Custom Uploader
slug: api/configure-the-custom-uploader
docTags: 
createdAt: 2023-08-25T15:56:20.546Z
---

:::hint{type="info"}
Use the following information as a guide to configure the features of custom publishing.
:::

## Description of Custom Uploading

Use Custom Uploading, rather than basic uploading, where a custom uploading API is required and when you need to create your own user interface (UI).

You can design the UI with additional controls not contained in the basic uploader. This allows the user to enter metadata through any configured web interface control (for example, to input additional information that is uploaded with the recording).

App Display properties allow you to customize branding and message strings in the screen recorder and video editor.

![](https://desk.zoho.com/DocsDisplay?zgId=708070986\&mode=inline\&blockId=bhz1vdf4b0c9c7f284b51a8d5d4282a7dcdbf)

The added optional input fields POST back when requesting the upload URL. For a custom upload, create a Java jar file with code that implements the Custom Publish interface.



In the jar file you create, account for:

- Upload properties
- Skin images
- Other properties

The following steps outline the custom publishing process:

1. Implement the CustomPublish Java interface class.
2. Create a signed jar with a class that implements the CustomPublish Java interface and any additional classes created to support the upload process.
3. Host the jar in the `jarHostPath`
4. Add the jar to the jars list.
5. Remove the **`BasicUploadSkin.jar`** (if present).

# Sample Custom Publishing Implementation

The following is an example structure of a custom publishing implementation:



```java
     CustomPublishExampleSrc
| appDisplay.properties
      | frame_icon.png| publish_customupload_16.png
| publish_customupload_24.png
| publish_customupload_48.png
|
\---com
\---screencastomatic
\---custompublish
CustomPublishImpl.java
```



## File Specifications

The sizes for the 96-dpi png icons are as follows:

- frame\_icon.png: 48x48
- publish\_customupload\_16.png: 16x16
- publish\_customupload\_24.png: 24x24
- publish\_customupload\_48.png: 48x48

# CustomPublishImpl.java

We will provide example files to you.



# Custom Publishing Sample (HTML)

We will provide example files to you.



# appDisplay.properties

The following properties can be set in the **appDisplay.properties** file:

- [som.\*.app.frame.title](#)
- [som.\*.app.preview.title](#)
- [som.\*.app.drawandzoom.enabled](#)
- [som.\*.app.editing.enabled](#)
- [som.\*.app.upload.message](#)
- [som.\*.app.upload.deleteafter](#)
- [som.\*.app.upload.showlink](#)
- [som.\*.app.upload.onexit.action](#)
- [som.\*.app.content.subdirectory](#)
- [som.\*.app.custompublish.name](#)
- [som.\*.app.custompublish.class](#)

### som.\*.app.frame.title

This property contains the title displayed on the window for the application.

```java
som.*.app.frame.title=Mybrand
```



### som.\*.app.preview\.title

This property contains the title displayed at the top of the window when viewing the preview after recording.

```java
som.*.app.preview.title=Upload to Mybrand
```



### som.\*.app.drawandzoom.enabled

This property enables and disables the **Show Draw and Zoom** tool on the recorder.

```java
som.*.app.drawandzoom.enabled=true
```



### som.\*.app.editing.enabled

This property enables and disables the **Show Edit** button to offer editing after recording.

```java
som.*.app.editing.enabled=true
```



### som.\*.app.upload.message

This property contains the message displayed after upload is complete. (Note the `TITLE_REPLACE` which we will replace using the `setDoneMessage` in the `CustomPublishImpl` as an example that you can update this message dynamically or replace the complete message. ) 

```java
som.*.app.upload.message=\
<div style="font-size:17pt; text-align:left;">\
Uploaded Video:<br>\
<b>TITLE_REPLACE</b>\
<br><br>\
You can set up a custom message here and also:\
<ul>\
<li>Choose if you want to show the link below.<br><br></li>\
<li>Choose if you want to launch a url when the <b>Continue</b> button below is pressed so you can direct the user to a playback page or any other url.</li>\
</ul>\
<br>For example, this app is set to go to Screencast-O-Matic.com when you click <b>Continue</b>\
</div>
```



### som.\*.app.upload.deleteafter

When this property is set to `true`, the app deletes the local recording after a successful upload. When this property is set to `false`, the app does not remove the local recording.

```java
som.*.app.upload.deleteafter=true
```



### som.\*.app.upload.showlink

This property enables and disables the **Show a link and copy** button for the URL returned after upload is complete.

```java
som.*.app.upload.showlink=true
```



### som.\*.app.upload.onexit.action

This property provides an optional link to launch after the user clicks the button when upload is complete. Omit this setting if no page needs to launch. Otherwise, set this property to a URL or to the string "gotoplayback," which launches the URL you returned after the upload is complete.

```java
som.*.app.upload.onexit.action=http://screencast-o-matic.com/
```

### som.\*.app.content.subdirectory

This property sets the subdirectory to store your users’ recordings. The default location where this subdirectory is created is **Documents**. The following example creates **Documents\Screen Recorder**, and adds a **Recordings** directory with a subdirectory for each recording stored on the computer ( **Documents\Screen Recorder\Recordings\\***individual recording folders&#x20;*).

```java
som.*.app.content.subdirectory=Screen Recorder
```



### som.\*.app.custompublish.name

This property sets the name shown in the app. For example, "Upload to Mybrand."

```java
som.*.app.custompublish.name="Upload to Mybrand"
```



### som.\*.app.custompublish.class

This property specifies the class that you provide to implement the **com.screencastomatic.CustomPublish** interface.

```java
som.*.app.custompublish.class=com.screencastomatic.custompublish.CustomPublishImpl
```

