2014-10-09 45 views
2

如何在Coldfusion中訪問本地文件outsite wwwroot。我想做一個「href」鏈接來訪問wwwroot目錄之外的文件。我嘗試了許多不同的解決方案,但其中任何一個都有效創建一個鏈接以訪問Coldfusion中「wwwroot」目錄之外的本地文件

+1

您嘗試過哪些解決方案?你得到的答案很可能會使用這些相同的技術。 – 2014-10-09 16:08:37

+0

是文件html還是某種二進制文件,如jpg,mp3等? – 2014-10-09 16:42:06

回答

6

您無法鏈接到Web根目錄之外的文件,這有助於保持服務器的安全。但是,如果您的CF服務器有權訪問該其他文件夾,則可以在您的應用程序中編寫一個CF頁面,該頁面可以使用CFCONTENT來顯示該文件夾中的文件。

但是,不要試圖通過在查詢字符串中傳遞該文件的路徑來訪問該文件。這會讓你面對其他安全問題。在數據庫中創建一個將這些文件映射到文件ID的表格,然後確保您登錄的用戶具有訪問該文件的正確角色或權限。

您會在查詢字符串中創建一個文件getFile.cfm並傳遞id=123。一旦你驗證您的用戶可以訪問該文件有問題,使用此代碼呈現給瀏覽器:

<cfheader name="Content-disposition" value="attachment;filename=#dafile#"> 
<cfcontent file="#dafile#" type="application/pdf"> 

只要確保在type屬性包含有關文件的正確mime-type

本例來自Ray Camden's post

+7

請注意他是如何配置的 - 傳遞一個如「id = 123」的密鑰。不要像傳遞文件名那樣做。如果你這樣做,有人會開始傳遞像filename = ../../../../boot.ini之類的東西,並且可以訪問幾乎任何他們夢寐以求的文件。另外,你的「getfile.cfm」文件的一部分應該檢查用戶是否有適當的權限來查看文件 - 否則,惡意用戶開始傳遞其他ID來查看他們是否可以查看其他文件(如果你看到我意思)。訪問web根目錄之外的文件時,安全性應該是您的第一個問題。 – 2014-10-09 16:58:51