Upload Media

This documentation provides guidelines on uploading images and video to server using the TruVideo Media SDK. The SDK offers simple methods to integrate upload functionalities into your application.

Prerequisites

  • Ensure you have integrated the TruVideo Core SDK into your project and completed with the authentication process

  • Camera module will provide MediaItem or simply provide filepath to upload (optional)

Step 1 : Create a MediaBuilder object

const mediaBuilder = new MediaBuilder(item.filePath);

Step 2 : Set tags or metaData mediaBuilder object if required

// Set Tags
mediaBuilder.setTag("key", "value");
mediaBuilder.setTag("color", "red");
mediaBuilder.setTag("orderNumber", "123");

// Set Metadata
mediaBuilder.setMetaData("key", "value");
mediaBuilder.setMetaData("key1", "1");
mediaBuilder.setMetaData("key2", "[4,5,6]");

Step 3 : Build the request with mediaBuilder

var request = await mediaBuilder.build();

Step 4 : Create object for getting callbacks from the SDK

const uploadCallbacks = {
    onProgress: (event: UploadProgressEvent) => {
        console.log(`ID: ${event.id}, Progress: ${event.progress}%`);
    },
    onComplete: (event: UploadCompleteEventData) => {
        console.log(`ID: ${event.id}, Type: ${event.fileType}`);
    },
    onError: (event: UploadErrorEvent) => {
        console.log(`ID: ${event.id}, Error: ${event.error}`);
    },
}

Step 5 : Finally call the upload to push data to server

var res = await request.upload(uploadCallbacks);

Result Returned

interface UploadCompleteEventData {
  id: string;
  createdDate?: string;
  remoteId?: string;
  uploadedFileURL?: string;
  metaData?: string; 
  tags?: string;
  transcriptionURL?: string;
  transcriptionLength?: number;
  fileType?: string;
}

Finalize :

After completing this steps the function should look like

// import the required classes
import { MediaBuilder, 
    UploadCompleteEventData, 
    UploadErrorEvent, 
    UploadProgressEvent 
} from '@trunpm/truvideo-capacitor-media-sdk';

// this demonstration is using MediaItem which is given by Camera SDK
const uploadMediaItems = async (mediaItems: MediaItem[]) => {
    for (const item of mediaItems) {
        try {
            // use media item or directly provide file path 
            const mediaBuilder = new MediaBuilder(item.filePath);

            // Set Tags
            mediaBuilder.setTag("key", "value");
            mediaBuilder.setTag("color", "red");
            mediaBuilder.setTag("orderNumber", "123");

            // Set Metadata
            mediaBuilder.setMetaData("key", "value");
            mediaBuilder.setMetaData("key1", "1");
            mediaBuilder.setMetaData("key2", "[4,5,6]");

            // Build Request
            var request = await mediaBuilder.build();

            // Handle Callbacks
            const uploadCallbacks = {
                onProgress: (event: UploadProgressEvent) => {
                    console.log(`ID: ${event.id}, Progress: ${event.progress}%`);
                },
                onComplete: (event: UploadCompleteEventData) => {
                    console.log(`ID: ${event.id}, Type: ${event.fileType}`);
                },
                onError: (event: UploadErrorEvent) => {
                    console.log(`ID: ${event.id}, Error: ${event.error}`);
                },
            };

            var res = await request.upload(uploadCallbacks);
            console.log('Successful: set upload');
            console.log('Upload successful:', res);
        } catch (error) {
            console.error('Upload error:', error);
        }
    }
}

Last updated

Was this helpful?