2009-07-09 105 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