File Transfer example


The index.html file containing JavaScript that makes use of the File Transfer API functionality is listed below.

<!DOCTYPE html>
<html manifest="manifest.appcache">
  <head>
    <title>FileTransfer API usage example</title>
    <link rel="x-antenna-managed-webapp-descriptor" href="webapp-descriptor.xml" />
    <script type="text/javascript">
    
    function printText(str) {
      var d = document.getElementById('text-box');
      d.appendChild(document.createTextNode(str));
      d.appendChild(document.createElement('br'));
      d.scrollTop = d.scrollHeight;
    }
    
    function getFile(file) {
      var callback = {
        onSuccess: function (entry) {
          printText("onSuccess " + JSON.stringify(entry));
        },
        onProgress: function (progress) {
          printText("onProgress " + progress);
        },
        onCancel: function () {
          printText("onCancel");
        },
        onFailure: function (data) {
          printText("onFailure " + JSON.stringify(data));
      }};
      var options = undefined;
      requestFileSystem(window.PERSISTENT, 1 * 1024 * 1024 /*1MB*/, function (fs) {
        fs.root.getFile(file, {create: true}, function (entry) {
          lastTask = launchbox.FileTransfer.download("http://websitetips.com/articles/copy/lorem/"+file, entry.toURL(), options, callback);
        }, function (err) {
        printText("getFile error: " + JSON.stringify(err));
        });
      }, function (err) {
        printText("requestFileSystem error: " + JSON.stringify(err));
      });
    }

    function readFile(file){ //This function is not connected with File Transfer Api. For more information about methods used here look at the Filesystem API
      var errorHandler = function(err) {
        printText(err);
      }
      requestFileSystem(
        window.PERSISTENT, 
        10*1024*1024 /*10MB*/, 
        function(fs) {
          fs.root.getFile(file, {}, function(entry) {
            entry.file(function(fd) {
              var reader = new FileReader();
              reader.onload = function(event) {
                printText("Read: " + reader.result);
              };
              reader.onerror = function(event) {
                printText("Error occured.");
              };
              reader.readAsText(fd);
            }, errorHandler);
          }, errorHandler);
        }, 
        errorHandler
      );
    }
    
    function clearOutput(){
      var d = document.getElementById('text-box');     
      d.innerHTML = "";
    }
  </script>
  </head>

  <body>
    <header>
      <h3>AMP Hybrid Client <span>FileTransfer API usage example</span>
      </h3>
    </header>
    
    <input type="button" onclick="getFile('ipsum.txt');" value="Download sample lorem ipsum txt file" /><br/>
    <input type="button" onclick="readFile('ipsum.txt');" value="Read a file"/><br/>
    <input type="button" onclick="getFile('error.asd');" value="Try to download non existing file" /><br/>
    <input type="button" onclick="clearOutput();" value="Clear output" />
    <div id="text-box"></div>
  </body>
</html>

The contents of the cache manifest file called manifest.appcache for this application are listed below:

CACHE MANIFEST

CACHE:
index.html

NETWORK:
*

The webapp-descriptor.xml file for this application is defined in the following way:

<?xml version="1.0" encoding="UTF-8"?>
<webapp-descriptor
    xmlns="http://www.antennasoftware.com/application-hosting/web-app-descriptor/2.0">
    <id>com.pega.sample.filetransfer</id>
    <version>1.0.0</version>
    <name>File Transfer API usage example</name>
</webapp-descriptor>

Related topics

Public API reference
Overview
Legal notice | Copyright © 2015 and Confidential to Pegasystems Inc. All rights reserved. | Feedback
Advanced...