uploadDocument Method

Summary

Uploads the specified data to the cache.

Syntax
TypeScript
JavaScript
uploadDocument = function( 
   uri, 
   data, 
   offset, 
   length 
) 
static uploadDocument( 
   uri: string, 
   data: ArrayBuffer, 
   offset: number, 
   length: number 
): JQueryPromise<any>; 

Parameters

uri

The URI to upload to, which came from the result of beginUpload or beginUploadDocument.

data

The binary data, of JavaScript type ArrayBuffer, to upload.

offset

The position within data to get the chunk to upload.

length

The length of the chunk from data to upload, relative to offset.

Return Value

A voidPromise object that may resolve successfully.

Remarks

After beginUpload or beginUploadDocument has resolved and returned a URI, this method can be used to upload chunks of the document.

BeginUploadDocument, BeginUpload, UploadDocument, and AbortUploadDocument are used together to get the same functionality as UploadFile, giving more control over the upload process. This method is often called in a loop to upload chunks of data to the cache over and over until the entire document has been uploaded. UploadDocument gives the developer control over when and how chunks are uploaded.

UploadDocument should not be called multiple times in a row without waiting for each call's Promise to be resolved, or the uploaded LEADDocument may be corrupt.

This method does not receive a DocumentUploadProgress object in the progress callback of the Promise.

When uploading is finished, EndUpload must be called to inform the factory that the uploading process has finished.

Unlike UploadFile, the Promise object returned by this method does not have an Abort method. Instead, AbortUploadDocument must be called with the same uploadUri being used to upload the document. This will not necessarily cause the Promise object from this method to fail immediately, but continued calls to UploadDocument will.

Note that the browser must support the FileReader API in order to manipulate filesystem data on the client. If the FileReader API is not supported, an error will be thrown and IsBrowserError will return true.

Refer to Uploading Using LEADTOOLS Document Library for more information on how to use this method.

Example

This example will download, upload, and load a document from the service to show that it is given a new cache entry.

Start with the example from LEADDocument and replace all the code inside the example function (search for the "// TODO: add example code here" comment) with the following code:

TypeScript
JavaScript
function DocumentFactory_UploadDocument() { 
   // Load the initial document 
   var url = "https://demo.leadtools.com/images/pdf/leadtools.pdf"; 
   loadDocument(url, true); 
} 
 
function loadDocument(url, downloadAfterLoad) { 
   log("Loading document " + url); 
   lt.Document.DocumentFactory.loadFromUri(url, new lt.Document.LoadDocumentOptions()) 
      .done(function (doc) { 
         log("Document loaded and has cache id: " + doc.documentId); 
         if (downloadAfterLoad) { 
            afterLoadDocument(doc); 
         } 
      }) 
      .fail(showServiceError); 
} 
 
function afterLoadDocument(doc) { 
   // Download its data 
   lt.Document.DocumentFactory.downloadDocumentData(doc.documentId, null, false) 
      .done(function (result) { 
         log("Finished downloading, mime type: " + result.mimeType + " data length: " + result.data.byteLength); 
         // Upload the data to a different document 
         uploadDocument(result.data); 
      }) 
      .fail(showServiceError); 
} 
 
function uploadDocument(data) { 
   // Start the data 
   var uploadDocumentOptions = new lt.Document.UploadDocumentOptions(); 
   lt.Document.DocumentFactory.beginUploadDocument(uploadDocumentOptions) 
      .done(function (uploadUri) { 
         // Upload the data 
         // data is an ArrayBuffer: 
         var bytes = new Uint8Array(data); 
         lt.Document.DocumentFactory.uploadDocument(uploadUri, bytes, 0, bytes.length) 
            .done(function () { 
               // Finish it 
               lt.Document.DocumentFactory.endUpload(uploadUri) 
                  .done(function () { 
                     // Load it and check 
                     loadDocument(uploadUri, false); 
                  }) 
                  .fail(showServiceError); 
 
            }) 
            .fail(showServiceError); 
      }) 
      .fail(showServiceError); 
} 
class DocumentFactory_UploadDocumentExample { 
    public constructor() { 
        lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/v200/LEADTOOLSEVAL.txt", "EVAL", null); 
    } 
 
    public run(buttonID: string) { 
        const exampleButton = document.getElementById(buttonID); 
        exampleButton.onclick = this.onClick; 
    } 
 
    onClick = () => { 
        //Load the initial document 
        const url = "https://demo.leadtools.com/images/pdf/leadtools.pdf"; 
        this.loadDocument(url, true); 
    } 
 
    loadDocument = (url: string, downloadAfterLoad: boolean) => { 
        log("Loading document " + url); 
        lt.Document.DocumentFactory.loadFromUri(url, new lt.Document.LoadDocumentOptions()) 
            .done((doc) => { 
                log("Document loaded and has cache id: " + doc.documentId); 
                if (downloadAfterLoad) { 
                    this.afterLoadDocument(doc); 
                } 
            }) 
            .fail(showServiceError); 
    } 
 
    afterLoadDocument = (doc: lt.Document.LEADDocument) => { 
        // Download its data 
        lt.Document.DocumentFactory.downloadDocumentData(doc.documentId, null, false) 
        .done((result) => { 
            log("Finished downloading, mime type: " + result.mimeType + " data length: " + result.data.byteLength); 
            // Upload the data to a different document 
            this.uploadDocument(result.data); 
        }) 
        .fail(showServiceError); 
    } 
 
    uploadDocument = (data: ArrayBuffer) => { 
        // Start the data 
        const uploadDocumentOptions = new lt.Document.UploadDocumentOptions(); 
        lt.Document.DocumentFactory.beginUploadDocument(uploadDocumentOptions) 
            .done((uploadUri) => { 
                // Upload the data 
                lt.Document.DocumentFactory.uploadDocument(uploadUri, data, 0, data.byteLength) 
                    .done(() =>{ 
                    // Finish it 
                    lt.Document.DocumentFactory.endUpload(uploadUri) 
                        .done(() => { 
                            // Load it and check 
                            this.loadDocument(uploadUri, false); 
                        }) 
                        .fail(showServiceError); 
 
                    }) 
                    .fail(showServiceError); 
            }) 
            .fail(showServiceError); 
    } 
} 

Requirements

Target Platforms

Help Version 20.0.2019.4.11
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2019 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Document Assembly