our objective is to give the Ignition Client User the ability to download/upload files between their desktop and the Ignition Gateway, via HTTP but without having to actually implement a HTTP Server on the Ignition Gateway.
We were wondering if there is a way to achieve this by using Ignition’s native functionality, without having to resort to alternative means, having build a solution around the standard features that Ignition may already provide.
is saving the files in the database as a blob an option?
You could load the file into a message and send it to the gateway, where a message receiving script would then save to the gateway’s file system. Then use the webdev module to provide a link point for downloading from that part of the file system.
Thanks for your contributions.
This is a summary of our solution approach:
Our objective is to give the Ignition Client User the ability to download/upload files between their desktop and the Ignition Gateway. The user experience we are looking for is similar to downloading/uploading files via a web browser, i.e. via HTTP. This doesn’t require the client to have network access to a shared drive on the server, i.e. the Client is not required to have Windows credentials to access the server. Since Ignition is already a client/server system with its own authentication system, we were wondering if Ignition provides a native feature that implements this functionality.
After reading the corresponding documentation, it looks like the File Explorer Component offers to view folders that are visible to the client machine:
docs.inductiveautomation.com/di … e+Explorer
docs.inductiveautomation.com/di … ystem.file
Nevertheless, this requires the Client to have Windows credentials to access a Server’s network folder, which is what we are trying to avoid.
We also tried the approach of storing these files as BLOBs in a database. Doing this does not require the clients to have access to anything other than the Ignition project because the Ignition gateway would already have access to the database:
One would be able to insert files with system.file.readFilesAsBytes:
docs.inductiveautomation.com/di … ileAsBytes
Downloading would be done with system.file.writeFile:
docs.inductiveautomation.com/di … .writeFile
Nevertheless, after some testing we discovered some formatting issues (we were trying to download an Excel file).
Moving forward, we finally decided to implement a web service on the Server to implement the required feature. Not ideal, but seemed to be the best way to go.
It is our opinion that Ignition should provide some support for features like these. Being a browser-based system, it doesn’t make sense having to build a solution around it to accomplish such a fundamental task. Requiring access to shared drives isn’t a good solution either, as it requires the clients to have Windows credentials to access the server, causing unnecessary hassle when it comes to deploying the application across clients.