Excellent tutorial - thanks.
I guess it is dating fast with the growing number of components to do this sort of thing, but I was just looking for something that did this, without needing .NET or SQL Server or ActiveX, or a thousand and one other requirements or ActiveX plugins.
I added a couple of lines to file.asp before the content type declaration to get sensible file name handling. Seems to work in IE6 and Firefox1, but is based on "google hearsay", not RFCs.
Disposition = "inline;filename=""" & rs("File Name") & """"
Response.AddHeader "Content-Disposition",Disposition
Response.ContentType = rs("Content type")
Oh and add "File Name" to the SQL retrieval earlier in files.asp
Now all I need do is integrate our authentication, supply a delete, refactor, the code, and I'll be set.