beginUpload Method

Summary

Starts uploading a document to the cache.

Syntax
TypeScript
JavaScript
beginUpload = function( 
   documentId 
) 
static beginUpload( 
   documentId: string 
): JQueryPromise<string>; 

Parameters

documentId

Optional: The ID to be used with the loaded document.

Return Value

A Promise object that may resolve successfully to a string object containing the result's URI that can be used with UploadDocument/uploaddocumentblob to upload a document.

Remarks

This method is the equivalent of calling beginUploadDocument with an instance of UploadDocumentOptions using all default parameter and UploadDocumentOptions.documentId set to documentId.

When the value of documentId is null (the default), then the document factory will create a new unique ID using a GUID generator. If the value is not null, then it is assumed to be a user-defined ID and used as is. In either case, the value is set in the LEADDocument.DocumentId property of the newly created document.

User-defined IDs can be used when the system already have unique IDs associated with the documents to be viewer. The document factory will not check nor guarantee the uniqueness of these IDs.

BeginUpload returns a Promise for a uri that the application may use to upload a JavaScript Blob/File object with UploadDocument/uploaddocumentblob. BeginUpload, UploadDocument/uploaddocumentblob, and AbortUploadDocument are used together to get the same functionality as UploadFile/uploadfiledocument, giving more control over the upload process.

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

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

Example
UploadDocument.ts
DocumentHelper.ts
UploadDocument.js
DocumentHelper.js
UploadDocument.html
import { DocumentHelper } from "../../utilities/DocumentHelper"; 
 
export class DocumentFactory_UploadDocumentExample { 
    public constructor() { 
        lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", null); 
        DocumentHelper.initFactory(); 
    } 
 
    public run = (buttonID: string) => { 
        document.getElementById(buttonID).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) => { 
        DocumentHelper.log("Loading document " + url); 
        lt.Document.DocumentFactory.loadFromUri(url, new lt.Document.LoadDocumentOptions()) 
            .done((doc) => { 
                DocumentHelper.log("Document loaded and has cache id: " + doc.documentId); 
                if (downloadAfterLoad) { 
                    this.afterLoadDocument(doc); 
                } 
            }) 
            .fail(DocumentHelper.showServiceError); 
    } 
 
    afterLoadDocument = (doc: lt.Document.LEADDocument) => { 
        // Download its data 
        lt.Document.DocumentFactory.downloadDocumentData(doc.documentId, null, false) 
            .done((result) => { 
                DocumentHelper.log("Finished downloading, mime type: " + result.mimeType + " data length: " + result.data.byteLength); 
                // Upload the data to a different document 
                this.uploadDocument(result.data); 
            }) 
            .fail(DocumentHelper.showServiceError); 
    } 
 
    uploadDocument = (data: ArrayBuffer) => { 
        // Start the data 
        const uploadDocumentOptions = new lt.Document.UploadDocumentOptions(); 
        // If we have the total size of the document set it. 
        // This will help optimize the upload process on the service 
        uploadDocumentOptions.documentDataLength = data.byteLength; 
        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(DocumentHelper.showServiceError); 
 
                    }) 
                    .fail(DocumentHelper.showServiceError); 
            }) 
            .fail(DocumentHelper.showServiceError); 
    } 
} 
export class DocumentHelper { 
   static showServiceError = (jqXHR, statusText, errorThrown) => { 
      alert("Error returned from service. See the console for details."); 
      const serviceError = lt.Document.ServiceError.parseError(jqXHR, statusText, errorThrown); 
      console.error(serviceError); 
   } 
 
   static log = (message: string, data?: any) => { 
      const outputElement = document.getElementById("output"); 
      if (outputElement) { 
         const time = (new Date()).toLocaleTimeString(); 
         const textElement = document.createElement("p"); 
         textElement.innerHTML = (outputElement.childElementCount + 1) + " [" + time + "]: " + message; 
         outputElement.insertBefore(textElement, outputElement.firstChild); 
      } 
 
      if (!data) 
         console.log(message); 
      else 
         console.log(message, data); 
   } 
 
   static initFactory = () => { 
      // To communicate with the DocumentsService, it must be running! 
      // Change these parameters to match the path to the service. 
      lt.Document.DocumentFactory.serviceHost = "http://localhost:40000"; 
      lt.Document.DocumentFactory.servicePath = ""; 
      lt.Document.DocumentFactory.serviceApiPath = "api"; 
   } 
} 
import { DocumentHelper } from "../../utilities/DocumentHelper"; 
 
export class DocumentFactory_UploadDocumentExample { 
    constructor() { 
        lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", null); 
        DocumentHelper.initFactory(); 
    } 
 
    run = (buttonID) => { 
        document.getElementById(buttonID).onclick = this.onClick; 
    } 
 
    onClick = () => { 
        //Load the initial document 
        const url = "https://demo.leadtools.com/images/pdf/leadtools.pdf"; 
        this.loadDocument(url, true); 
    } 
 
    loadDocument = (url, downloadAfterLoad) => { 
        DocumentHelper.log("Loading document " + url); 
        lt.Document.DocumentFactory.loadFromUri(url, new lt.Document.LoadDocumentOptions()) 
            .done((doc) => { 
                DocumentHelper.log("Document loaded and has cache id: " + doc.documentId); 
                if (downloadAfterLoad) { 
                    this.afterLoadDocument(doc); 
                } 
            }) 
            .fail(DocumentHelper.showServiceError); 
    } 
 
    afterLoadDocument = (doc) => { 
        // Download its data 
        lt.Document.DocumentFactory.downloadDocumentData(doc.documentId, null, false) 
            .done((result) => { 
                DocumentHelper.log("Finished downloading, mime type: " + result.mimeType + " data length: " + result.data.byteLength); 
                // Upload the data to a different document 
                this.uploadDocument(result.data); 
            }) 
            .fail(DocumentHelper.showServiceError); 
    } 
 
    uploadDocument = (data) => { 
        // Start the data 
        const uploadDocumentOptions = new lt.Document.UploadDocumentOptions(); 
        // If we have the total size of the document set it. 
        // This will help optimize the upload process on the service 
        uploadDocumentOptions.documentDataLength = data.byteLength; 
        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(DocumentHelper.showServiceError); 
 
                    }) 
                    .fail(DocumentHelper.showServiceError); 
            }) 
            .fail(DocumentHelper.showServiceError); 
    } 
} 
export class DocumentHelper { 
   static showServiceError = (jqXHR, statusText, errorThrown) => { 
      alert("Error returned from service. See the console for details."); 
      const serviceError = lt.Document.ServiceError.parseError(jqXHR, statusText, errorThrown); 
      console.error(serviceError); 
   } 
 
   static log = (message, data) => { 
      const outputElement = document.getElementById("output"); 
      if (outputElement) { 
         const time = (new Date()).toLocaleTimeString(); 
         const textElement = document.createElement("p"); 
         textElement.innerHTML = (outputElement.childElementCount + 1) + " [" + time + "]: " + message; 
         outputElement.insertBefore(textElement, outputElement.firstChild); 
      } 
 
      if (!data) 
         console.log(message); 
      else 
         console.log(message, data); 
   } 
 
   static initFactory = () => { 
      // To communicate with the DocumentsService, it must be running! 
      // Change these parameters to match the path to the service. 
      lt.Document.DocumentFactory.serviceHost = "http://localhost:40000"; 
      lt.Document.DocumentFactory.servicePath = ""; 
      lt.Document.DocumentFactory.serviceApiPath = "api"; 
   } 
} 
<!doctype html> 
<html lang="en"> 
<title>Document Example | UploadDocument</title> 
 
<head> 
   <script src="https://code.jquery.com/jquery-2.2.4.min.js" 
      integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> 
 
   <script src="../../LT/Leadtools.js"></script> 
   <script src="../../LT/Leadtools.Controls.js"></script> 
   <script src="../../LT/Leadtools.Annotations.Engine.js"></script> 
   <script src="../../LT/Leadtools.Annotations.Designers.js"></script> 
   <script src="../../LT/Leadtools.Annotations.Rendering.Javascript.js"></script> 
   <script src="../../LT/Leadtools.Annotations.Automation.js"></script> 
   <script src="../../LT/Leadtools.ImageProcessing.Main.js"></script> 
   <script src="../../LT/Leadtools.ImageProcessing.Color.js"></script> 
   <script src="../../LT/Leadtools.ImageProcessing.Core.js"></script> 
   <script src="../../LT/Leadtools.ImageProcessing.Effects.js"></script> 
   <script src="../../LT/Leadtools.Document.js"></script> 
   <script src="../../LT/Leadtools.Document.Viewer.js"></script> 
   <link rel="stylesheet" type="text/css" href="../../css/examples.css"> 
 
   <!-- All demo files are bundled and appended to the window --> 
   <script src="../../bundle.js" type="text/javascript"></script> 
</head> 
 
<body> 
   <div> 
      <button type="button" id="exampleButton">Run Example</button> 
   </div> 
   <div id="output"></div> 
   <div> 
      <img id="img" /> 
   </div> 
</body> 
 
<script> 
   window.onload = () => { 
      const example = new window.examples.DocumentFactory.UploadDocument(); 
      example.run("exampleButton"); 
   }; 
</script> 
</html> 
Requirements

Target Platforms

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

Leadtools.Document Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.