2009-07-09 50 views
3

请原谅我的无知。我正在寻找正确的方向。模糊链接url

我有一页(pdf)下载链接。 如果我点击链接,pdf将在新页面中打开。 我可以看到pdf驻留在服务器上的文件夹。 如果我猜想在同一个文件夹中的其他文件名,也许我可以运气。 某些文件是私人的,所以我不希望用户从网址中获得提示。 如何隐藏此信息? 我们在后台运行.net 2。我可以调用一个方法并让文件打开吗?

任何帮助表示赞赏。我不知道要搜索什么才能让我开始。

感谢

我们有与.NET 2后端。

回答

12

你可以用你的数据库GUID,那么你可以创建一个页面,DownloadPdf.aspx每个PDF文件相关联,并通过它的GUID来定位你的文件系统的正确的文件,并使其:

Response.Clear(); 
Response.ContentType = "application/pdf"; 
Response.WriteFile(physicalPathToFile); 
Response.End(); 

编辑

如果你想给用户下载PDF格式的能力,你可以添加以下行,之前到Response.End:

Response.AddHeader("content-disposition", "attachment; filename=" + filename); 

其中,文件名可能是物理文件的非晦涩名称(或您想要给它的任何名称)。

+2

更好的是,将文件重命名为guid,并将原始文件名保留在数据库中。这样,您可以保证唯一的文件名,甚至可以拥有基本的文件版本。 – 2009-07-09 14:25:56

1

D.的帖子是100%正确的,您可以更进一步并使用.resources扩展名保存该文件,因此IIS永远不会直接为filE提供服务。

+1

+1。这是一个很好的观点,虽然通过将文件存储在app_data中也可以实现,对吗?这样您就不必扭曲文件类型(比如,当您以管理员身份远程浏览服务器时,或者您只想知道正在处理的内容类型时,方便使用) – 2009-07-09 15:34:02