Best practice Solution for exposing Windows file share (UNC path) contents to Perspective users

Hi all,

I'm looking for input on the cleanest way to solve the following requirement in Perspective (Ignition 8.3.4, Gateway running on Ubuntu 20.04.6). The rest of my Infrastructure mainly runs on Windows incl. the File Shares.

Setup:

  • We have asset views in Perspective where each asset already displays a UNC path
    (e.g. \\mydomain.com\share...\Asset_01) pointing to a Windows file share that contains
    documentation, drawings, manuals etc. for that specific asset.
  • Users access Perspective purely through a web browser (Edge, Chrome).

Goal:

  • User opens an Asset view, sees the UNC path already filled in a text field.
  • User clicks on that path/text and should be able to browse/see the files in that folder
    and open them - ideally without leaving the browser.

What I already know / have considered:

Browsers can't resolve \server\share paths directly (no browser-native UNC support),
so this always has to go through the Gateway somehow.

  • One option: mount the share via CIFS on the Ubuntu Gateway (fstab + cifs-utils), then use
    a Jython script (os.listdir) to build a simple file browser popup in Perspective, and
    system.perspective.download() to deliver files to the client.
  • Alternative (much simpler): just let users copy the UNC path and paste it into Windows
    Explorer manually, relying on their normal AD/domain permissions. Works, but feels like
    a workaround rather than a "real" Perspective solution, and doesn't help for users outside
    the domain network or on non-Windows clients.

Questions for the community:

  1. Is it even possible to implement a solution to access Windows File Shares via Ignition Perspective on a Ubuntu Enviroment by using a web browser? Does anyone have experience with this?
  2. For larger files (CAD drawings, PDFs with images etc.), is system.perspective.download()
    the right tool, or is there a better way to stream files rather than loading them fully
    into memory on the Gateway?
  3. Any pitfalls with CIFS mounts on the Gateway host itself (reliability after reboot,
    network share become unavailable, etc.) that I should be aware of?

Any real-world experience, module recommendations, or "we tried X, don't do that" stories
are very welcome! I know this is a very specific "Problem" of mine but at this point, I will accept any recommendations.

Thanks in advance.

Some food for thought:

  1. If you can move all the files to a database, then the Automation Professionals Blob Server module might be a useful tool. It might be quite a bit of work, but you may end up with a better solution in the long run:
  1. You are correct that the browser limitations will be a never ending challenge. Every browser security update can easily turn into a new project. In the long term it may be better to use Vision for this purpose. It doesn’t have to replace the entire system, but perhaps a separate Vision project just for selecting/viewing documentation would be appropriate.

  2. Break this task down into separate tasks for each file type. How you handle a PDF might be totally different from how you handle a CAD file.

  3. Learning how to build a 3rd party scripting module in Java may open up a lot tools that you can use.

  4. I have some scripts that produce custom Excel spreadsheets. I stop my script at system.perspective.download and let the end user figure it out from there. 100% of my end users know how to open a spreadsheet located on the local file system.

The Web Dev module makes this sort of stuff very easy.

I think you just drop an iFrame component onto your view and point the source to \\mydomain.com\share...\Asset_01 (although I'd be inclined to use the forward-slash version, //mydomain.com/share.../Asset_01.pdf or whatever).

I've only used this where the files were on the Ignition gateway but it should work.

If your ignition service runs under an active directory account that has access to the fileshare, then so will ignition. I don't know how it works if ignition is running on Linux though...