Skip to main content Skip to complementary content
Close announcements banner

WriteExtensionObject Method

Overloads

WriteExtensionObject(ExtensionUploadHandle, Byte[])

Uploads a piece of an extension object. The handle returned contains the current state of the upload.

WriteExtensionObject(ExtensionUploadHandle, Byte[])

Uploads a piece of an extension object. The handle returned contains the current state of the upload.

Declaration

      ExtensionUploadHandle WriteExtensionObject(ExtensionUploadHandle handle, byte[] chunk)
    

Parameters

Type Name Description
ExtensionUploadHandle handle

The handle which identifies the upload.

System.Byte[] chunk

The data to upload.

Returns

Type Description
ExtensionUploadHandle

A handle which contains the current state of the upload.

Remarks

An upload usually requires several calls to this method and it is very important that the handle used is the handle which was returned from the last successful call.

security

Requires membership of local group QlikView Management API.

Examples

The following code example uploads a document extension to a QVS.

The service key injection is assumed to be handled behind the scenes. For an example of how to inject the service key, see Samples.

    using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using QMSAPI;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // create a QMS API client
            IQMS apiClient = new QMSClient();

            //retrieve a time limited service key
            ServiceKeyClientMessageInspector.ServiceKey = apiClient.GetTimeLimitedServiceKey();

            //This is a valid QVS guid
            Guid qvsId = new Guid("{6afbbc64-9681-406b-8917-e78bc370a05c}");

            //Initiate the upload
            ExtensionUploadHandle handle = apiClient.InitiateUploadExtensionObject(qvsId);

            if (handle != null)
            {
                FileStream fs = new FileStream(@"C:\FlexiGrid.qar", FileMode.Open);

                int maxBufferSize = 1024 * 16;

                byte[] buffer = new byte[maxBufferSize];
                int bytesRead;

                while ((bytesRead = fs.Read(buffer, 0, maxBufferSize)) > 0)
                {
                    //Copy the read bytes into a new buffer with the same size as the number of received bytes
                    byte[] byteWireBuffer = new byte[bytesRead];
                    Buffer.BlockCopy(buffer, 0, byteWireBuffer, 0, bytesRead);

                    //Write the buffer to the QVS
                    handle = apiClient.WriteExtensionObject(handle, byteWireBuffer);        
                }

                //Finalize the upload. This will install the extension object if it is valid.
                List<QVSMessage> msg = apiClient.CloseAndInstallExtensionObject(handle);
                msg.ForEach(m => Console.WriteLine(m.Text));
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("An exception occurred: " + ex.Message);
        }
        // wait for user to press any key
        Console.ReadLine();
    }
}
  

See Also

Did this page help you?

If you find any issues with this page or its content – a typo, a missing step, or a technical error – let us know how we can improve!

Join the Analytics Modernization Program

Remove banner from view

Modernize without compromising your valuable QlikView apps with the Analytics Modernization Program. Click here for more information or reach out: ampquestions@qlik.com