File Storage Adapter
File Storage is an out-of-the-box adapter that can be used to store and retrieve files from a default storage system in Quantum. The adapter uses S3 (Simple Storage Service) as the back-end storage, which is an object storage service that is provided by Amazon Web Services.
You can use the service in scenarios where you want a back end to store the data for your app, such as archives, website data, or data lakes.
NOTE:
This document is about the default File Storage adapter for Quantum Fabric. For information on connecting to a custom S3 bucket, refer to AWS S3 Adapter.
Configure a File Storage adapter
To configure a File Storage adapter, follow these steps:
- While selecting an endpoint for an object service, from the Endpoint Type list, select File Storage.
- In the Name field, provide a unique name for your service.
NOTE: If you have an existing service with the same name, you can select a different Version for the service.
- Under Connection Parameters, provide the following details.
Fields Description Expiry Time in milliseconds The expiration period of the objects in the S3 bucket.
This parameter is optional.
Service Namespace The namespace of the resource that you want to use. For more information, refer to Amazon Resource Names.
Advanced Settings Additional settings that are configured for the S3 bucket. For more information, refer to Advanced Settings for S3 Bucket Properties.
This parameter is optional.
-
For additional configuration of your service definition, provide the following details in the Advanced section.
Field Description Custom code Specifies any custom business logic that you want to use for the service and the operations. The custom business logic must be in a JAR file.
To specify a JAR associated to the service, select one from the Select Existing JAR drop-down menu or click Upload New to add a new JAR file.
For on-premise instances of Quantum Fabric, make sure that the JAR file that is built on the same JDK version that is used to install Quantum Fabric Integration.
API Throttling API throttling on the Quantum Fabric Console limits the number of request calls within a minute. To use API Throttling, configure the following fields:
- Total Rate Limit: Limits the number of requests that are processed by the service
- Rate Limit Per IP: Limits the number of requests that are processed by an IP address
To override throttling from the Quantum Fabric App Services Console, refer to Override API Throttling Configuration.
NOTE:
The settings in the Advanced section are optional. - Enter the Description for the service.
- Click SAVE to save your service definition.
File Storage Operations
After you create an object service for the File Storage, Quantum Fabric creates a default object, called FILE, for the service. Fabric also creates operations for the service.
The operations are REST APIs that are mapped to back-end methods, such as GET and CREATE. For more information about these operations, refer to File Storage Adapter APIs.
You can invoke the operations from a Quantum Visualizer project by using the Quantum Fabric SDKs. For example, to upload an image file from the client app to the S3 bucket, you can use the following code:
//Function to upload a file to the bucket function uploadFile() { //Creating an instance for the Object Service currentObj = kony.sdk.getCurrentInstance(); objSvc = currentObj.getObjectService("<Object-Service>", {"access" : "online"}); //Setting the headers for the request headers = {}; headers["Content-Type"] = "application/json"; //Creating an image object for upload fileMap = {}; fileMap["rawBytes"] = kony.convertToBase64(<Form>.<Image-Widget>.rawBytes); //Setting the metadata for the image file metadata = {}; metadata["file_name"] = <Form>.<TextBox-Widget>.text + ".jpg"; metadata["security_key"] = <Form>.<TextBox-Widget_Secure>.text; metadata["file_namespace"] = "review"; //Configuring the upload parameters for the request uploadEntityType = "UploadInputTypeRawBytes"; uploadParams = {}; uploadParams["headers"] = headers; uploadParams["metadata"] = metadata; uploadParams["file"] = fileMap; //Creating a success callback for the upload API function successCallback(response) { alert("Upload successful for " + metadata["file_name"] + " : " + JSON.stringify(response)); } //Creating a failure callback for the upload API function failureCallback(error) { alert("Upload Error " + JSON.stringify(error)); } //Setting additional options for the request options = { disableIntegrityCheck: true }; //Calling the upload API objSvc.getFileStorage().upload(uploadEntityType, uploadParams, successCallback, failureCallback, options); }
In the code snippet, the rawBytes of the image are fetched from an Image Widget on a form. The rawBytes are then uploaded to the S3 bucket by using the upload API.