Webserver Temp Folder Substitute
So I was using the Path.GetTempFileName() function to generate a temp file for writing to before moving to the webserver. Works fine locally because I have permissions to the temp directory but when published the webserver blocks or have very restrictive permissions to its temp directory. Sure its a security reason but question: what would be a good alternative for generating temp files on the server that customers using the website would have read/write access to?
Im thinking that generating a guid in a folder they should have access too should help eliminate any naming collisions of the file name as an initial workaround.
Any issues with that or better solutions?
Thansk
Re: Webserver Temp Folder Substitute
Just found Path.GetRandomFileName(). Appears to be good for generating the random file name and the documentation states its preferred over GetTempFileName BUT how well does it randomize? Chances of generating a duplicate file name that the user may have already generated or another user?
Re: Webserver Temp Folder Substitute
Looks like it uses 8.3 with (0-9 + a-z) for each character, so 36^11 possible file names. That's an 18 digit number...I think you'll be fine.
Edit - and you could always add additional randomly generated digits to the front of the filename returned by GetRandomFileName to ensure no duplicates in the remaining lifetime of the universe.
Edit2 - or you could add a formatted date/timestamp to the front of the filename which would mean that two files would have to be generated in the same millisecond with the exact same randomly chosen filename from GetRandomFileName in order to collide.
Re: Webserver Temp Folder Substitute
Thanks!
I think if I use Guid.NewGuid.ToString() it will be even better and I wont have to write that extra line of code to determine the file extension as I will be setting it :D
Any other options out there?
Re: Webserver Temp Folder Substitute
My web users all get a GUID upon initial login to the site - and whenever I serve up a file for download or viewing I put it in a folder named as that GUID.
The filenames are all pretty names - so they can print and download.
Why do you want a random filename?
Re: Webserver Temp Folder Substitute
I went with guids. Im needing a random file name as I generate it from a template file. Once its generated and saved it moved to its proper folder location and name is changed to its proper name. I have a Document table with Path and Name but teh file ends up getting renamed to the documentid yet the "Name" remains the same si I can have several documents as "Document.docx", for ex, in teh table yet in the folder they are all named by DocumentID table index identifier.