Automation Professionals' Blob Server Module

Automation Professionals is pleased to announce an alpha release of its new Blob Server Module.
Available only for Ignition v8.1, here.

The Blob Server Module provides a simple way to deliver images, PDF files, or other binary content from a database to your Perspective clients or other web applications. Without needing the WebDev module. All you need is a Named Query that has appropriate security settings and returns a single row with two columns: Content, and ContentType.

Modest documentation may be previewed here.

:grin:

{ I have not decided how to price this. Won’t be much, if anything. I created it today, start to finish, in about four hours. }

30 Likes

Note: the parameter check rejects any named query that uses a QueryString parameter. Not safe for this usage.

4 Likes

More percolation yesterday and this morning. Now rejects execution of Update queries. (Duh!)

Also caches any rejection based on lack of the correct columns, so attempts to DoS your server by calling inappropriate queries will be short-circuited.

New module file, for Ignition v8.1 only, here. Prior file removed.

Docs updated in place.

I’ll call this one a beta. I’d appreciate reports on any failure to honor security restrictions.

{ Edited to remove stale link. Keep scrolling down. (: }

Ah, well. It was not actually running off Perspective security. It was looking at the gateway web interface’s user. /:

Another beta here.

(I had to make it depend on Perspective to access the correct session info–this is not going to be a general purpose tool.)

{ Edited to remove stale link. Keep scrolling down. (: }

Hi, Would this work for Vision too?

No, but it isn’t necessary. Vision can directly call a named query and pass the resulting raw bytes to the desired front-end component. (PDF Viewer, Paintable Canvas, etc.)

Can even be the same named queries defined for the Blob Server.

Hey,

That sounds great, in my case the images are already saved as blobs into a DB. Do you know where I can find guidance on how to pass that data into a paintable canvas? I can create a DB query to get to the cell containing the blob data, for example via query tag of type Dataset, but what then? How do I pass the “raw bytes” to the canvas?

Thanks

This topic may be of some help:

1 Like

I decided to make this a free module, like the venerable Simulation Aids.

For Ignition v8.1 only, Release v1.0.0.

FWIW, dropping the license checks reduced this to a total of 352 lines of java. It didn’t feel right charging for such a tiny thing.

As with Simulation Aids, support is here on the forum or by email, on an as-available basis.

15 Likes

If anyone is disappointed that they can’t pay for this module, there’s always the tip jar link in my profile. :grin:

7 Likes

On the one hand...

On the other hand...

10 Likes

Maybe our friends at IA could incorporate this in the main code (Paul could you license it to them?). My IT department gets all frustrated when they hear the WebDev module. What you are not using MS tools to develop a website? I really want to run IIS for my backend with ASP.NET.

Thanks for a free module that solves a class of problems. I was just needing this exact sort of thing!

1 Like

Paul?

Like with Simulation Aids, I release things for free as marketing for my services and skill set. And to break down resistance to installing my 3rd-party modules in general.

So, no, not at this time.

{ Not that IA can't replicate it themselves in a trice. But they generally don't stomp on their developers' products. }

3 Likes

:raised_hands:

Doing Gods work. I got some people at my job using Simulation Aids and I think it has opened the doors.

Am I setting this up correctly?
image

Where would I paste this URL into the application to display on an Image component? In the HTTP binding? It’s not liking that setup for me. I feel I may be missing something.

Looks good.

Include the image id in your table data. In the cell view that will be configured for that column, that id will be passed as params.value. Bind props.source of the image component in that view to an expression that assembles the complete URL with that ID.

I think I have this set up correctly but the image is not showing up and the logs are showing the following messages.
image

Any ideas?

uri is to large, seems like to much is send over the http request

Then you are obviously not generating a simple URL with an appended ID value. Are you appending the base64 instead? (You don’t need that column in your table dataset at all when you are going to have the cell views’ image component fetch the blob.)