BLOB

Labels
AJAX(112) App Studio(7) Apple(1) Application Builder(245) Application Factory(207) ASP.NET(95) ASP.NET 3.5(45) ASP.NET Code Generator(72) ASP.NET Membership(28) Azure(18) Barcode(2) Barcodes(3) BLOB(18) Business Rules(1) Business Rules/Logic(140) BYOD(13) Caching(2) Calendar(5) Charts(29) Cloud(14) Cloud On Time(2) Cloud On Time for Windows 7(2) Code Generator(54) Collaboration(11) command line(1) Conflict Detection(1) Content Management System(12) COT Tools for Excel(26) CRUD(1) Custom Actions(1) Data Aquarium Framework(122) Data Sheet(9) Data Sources(22) Database Lookups(50) Deployment(22) Designer(177) Device(1) DotNetNuke(12) EASE(20) Email(6) Features(101) Firebird(1) Form Builder(14) Globalization and Localization(6) How To(1) Hypermedia(2) Inline Editing(1) Installation(5) JavaScript(20) Kiosk(1) Low Code(3) Mac(1) Many-To-Many(4) Maps(6) Master/Detail(36) Microservices(4) Mobile(63) Mode Builder(3) Model Builder(3) MySQL(10) Native Apps(5) News(18) OAuth(8) OAuth Scopes(1) OAuth2(11) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(10) PKCE(2) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(179) Reports(48) REST(29) RESTful(29) RESTful Workshop(15) RFID tags(1) SaaS(7) Security(80) SharePoint(12) SPA(6) SQL Anywhere(3) SQL Server(26) SSO(1) Stored Procedure(4) Teamwork(15) Tips and Tricks(87) Tools for Excel(2) Touch UI(93) Transactions(5) Tutorials(183) Universal Windows Platform(3) User Interface(338) Video Tutorial(37) Web 2.0(100) Web App Generator(101) Web Application Generator(607) Web Form Builder(40) Web.Config(9) Workflow(28)
Archive
Blog
BLOB
Thursday, May 2, 2013PrintSubscribe
Code On Time Tools for Excel, Upload/Download Adapters

Code On Time release 7.0.8.0 introduces support for Tools for Excel.  This new alternative development environment is an add-in for Microsoft Excel 2010 - 2013. It provides a bird-eye view of project configuration element properties with the ability to make rapid and massive changes. Download Tools for Excel at http://codeontime.com/releases/tools-for-excel and use them alongside the Project Designer built in the application generator.

Application framework in the core of web apps created with Code On Time now supports virtual binary fields that can be stored in the File System, Windows Azure Storage, or Amazon S3. Store your binary content in the external storage systems without writing a single line of code with the  help of upload/download adapters. Adapters are implemented without dependencies on the external libraries. All communications with external storage systems are performed through the corresponding REST APIs.

The following features and enhancements were introduced in the new release:

  • Code On Time Tools for Excel
  • File Upload/Download Adapters
  • jQuery 1.9.1 and jQuery UI 1.10.2 are now integrated in the client library.
  • Metadata Builder has been enhanced to support cross-synonym references for Oracle databases.
  • Auto-refresh of data views will automatically sync a view to show the last selected data row. Auto-refresh will not be performed on form views.
  • Implementation of ActionResult.ShowModal will correctly display modal views of the current controller.

The next release with the new preview of the second generation data sheet view will go out soon. We expect to introduce Mobile Client Library and upload/download adapter for Google Drive in May of 2013.

Monday, April 29, 2013PrintSubscribe
Overview of Upload/Download Adapters

Large files are frequently stored in databases as BLOB fields (binary large objects). Code On Time offers out-of-the-box support for upload and download of content directly to BLOB table columns. However, common practice is to store the binary content outside of the database. There are numerous advantages to this approach:

  • Reduced database size
  • Simplified backup
  • Low cost of storing large amounts of data
  • Opportunity to create a content delivery network (CDN)

File System

The most common method to store external files is in the file system. The files can be saved on the same hard drive of the host machine, or on an external Network-Attached Storage (NAS) device. While these devices are simple to configure, they still will require maintenance to ensure redundancy and performance.

Azure Storage

Microsoft Azure Storage cloud platform is a high-redundancy and availability solution that stores all data in data centers managed by Microsoft. It offers geo redundant storage, affinity groups, and logging. Each storage account can open multiple “containers” that are accessed via HTTP requests using unique container keys. Containers may be declared as “public” if necessary.

Amazon S3

Amazon Simple Storage Service (Amazon S3) is another popular cloud solution that offers features similar to Microsoft Azure Storage. It offers data redundancy and high availability, enabling rapid scaling of application infrastructure. Each account can create multiple buckets to store data, which are accessed via HTTP requests using one or more “Secret Access Keys”.

Configuring an Upload/Download Adapter

Declare virtual BLOB fields by entering a few parameters in the BLOB Adapter Configuration of a data controller. The web application framework will perform REST requests to a specified storage system, making it possible to use any combination of adapters in a single application without creating dependencies on third-party libraries.

A physical table column storing the file name is required for each virtual BLOB field definition. It allows the application framework  to determine existence of binary content.

Optional utility table columns Length and Content Type may be specified. The matching data controller fields will enable the application framework to communicate the file type and size to the client browser.

The table below shows configuration parameters that may be used to set up an adapter.

Parameter Description Storage System
Access-Key-ID The Access Key ID of the specified Secret Access Key required to form secure requests to Amazon S3. S3
Account Name of the Azure Storage Account. Azure
Bucket The bucket that stores the binary content. S3
Container The container that stores the binary content. Azure
Content-Type-Field The name of the data controller field that stores the file content type (data type String). Optional
Field The name of the virtual BLOB field. Required
File-Name-Field The name of the field that stores the file name (data type String). Required
Key The key used to authenticate Azure Storage requests. Azure
Length-Field The name of the data controller field that stores the file length (data type Int). Optional
Path-Template The path to the binary content in the storage system. May include references to data controller field names and special names. Required
Storage-System The type of storage system that holds the binary content. Supported values are “File”, “Azure”, and “S3”. Required
Secret-Access-Key The Secret Access Key used in conjunction with Access Key ID to form secure requests to Amazon S3. S3

Configuring Path Template

The path template can reference data controller field names in curly brackets ({}). The following example references the data controller fields ProductID and PictureFileName. This path template will work with Azure and S3 storage systems.

Path-Template: Products/{ProductID}-{PictureFileName}

The file system path template must resolve as a physical path in the file system.

Path-Template: C:\Northwind\Customers\{CustomerID}-{PhotoFileName}

You can also specify a path relative to the application root when using file system storage.

Path-Template: ~\App_Data\Customers\{CustomerID}-{PhotoFileName}

Special names $Extension and $FileNameWithoutExtension can also be used in the path template with any storage system.

Path-Template: Products/{$FileNameWithoutExtension}-{ProductID}.{$Extension}

Most hosted storage systems (Azure, S3, Google Drive) are only supporting a limited set of characters in the path. The application framework will automatically replace non-alphanumeric characters with dash (-) when evaluating path templates.

Saturday, April 27, 2013PrintSubscribe
File System Upload/Download Adapter

A local or remote file system is the most common method to store large binary content. Let’s implement a customer photo field in the Northwind database. Several utility fields in the Customers table will store file name, size, and type. The file itself will be stored in a specified folder location.

Adding Utility Fields to the Database

Start SQL Server Management Studio. In the Object Explorer, right-click on Databases / Northwind / dbo.Customers and press Design.

Designing the Customers table of Northwind database.

Add the following columns:

Column Name Data Type Allow Nulls
PhotoFileName nvarchar(250) yes
PhotoLength int yes
PhotoContentType nvarchar(50) yes

Save the changes to the table.

Start the web application generator. Click on the project name, and press Refresh. Check the box next to Customers controller and proceed to refresh the web app.

Refreshing the Customers table.

Configuring BLOB Field

Start the Project Designer. In the Project Explorer, switch to the Controllers tab. Right-click on Customers / Fields node and press New Field.

Creating a new field in Customers controller.

Assign the following values:

Property Value
Name Photo
Type Byte[]
Allow null values. yes
Value is retrieved on demand yes
Source Fields CustomerID
On Demand Handler CustomerPhotoHandler
On Demand Style Thumbnail
Label Photo

Save the field. Drag the new field node onto Customers / Views / editForm1 to instantiate a data field in the view.

Dropping the 'Photo' field node onto view 'editForm1'.     Photo data field instantiated in view editForm1.

Use the same technique to create a data field in view grid1 as well.

Next, double-click on the Customers controller node. Enter the following in BLOB Adapter Configuration.

BLOB Adapter Configuration

Field: Photo
Storage-System: File
Path-Template: C:\Northwind\Customers\{CustomerID}-{PhotoFileName}

Press OK to save changes.

Viewing the Results

On the toolbar, press Browse. Navigate to the Customers page and start editing a record. The new Photo field will accept file uploads. Click on the link and upload a file. The bar at the top of the screen will show a confirmation of upload and a thumbnail of the picture will be displayed. The File Name, Length, and Content Type utility fields will be updated accordingly.

Uploading a picture to Photo field in Customers controller.

The files can be seen in File Explorer.

The uploaded files are stored in the specified folder.

To upload files larger than 4 MB, you will need to increase the application upload size limit.