Thanks Kevin. I've read this a thousand times on the forum, but it didn't register that it was also true of file opening.
So I realized that the network drive I was trying to read from was mounted on my PC where I am using designer, but not on the server that hosts Ignition. So with renewed hope, I mounted this share on the hosting server and still nothing. Can't read it, and it doesn't exist according to system.file.fileExists().
I can ping the share from the server, and I can read the file from a command window, but from Ignition I can't. Ignition can see a file that I store locally on the server, but I can't see it on the network mounted drive.
This is a Windows server, and I am logged in with the same credentials that Ignition is using.
Running this in perspective means that the script is executing on the gateway not on the client computer, therefore most likely, it can't find the file since it isn't on the gateway computer.
The gateway is where Ignition is installed, this is where the perspective session backend is running. The client computer is where the perspective session frontend is running. Therefore, the client cannot browse the client's local file system (best to my knowledge). Using the above script would only work if your files are hosted on the gateway computer. Depending on what you are doing, the Perspective file upload component may be useful.
As @dkhayes117 notes, the correct answer is the upload component. That means the user in front of the browser must be involved in selecting the file to be processed. Anything that doesn't involve the user in that phase is behavior that browsers block, because that is what malware wants to do.