我正在寫asp.net mvc網絡應用程序,它使用大量的.jpg文件,這些文件位於Web服務器之外的共享文件夾中,並且無法通過http協議訪問。
如何將圖像路徑放置在img標記內?ASP.NET MVC和鏈接的共享文件夾上的照片
0
A
回答
0
如果Web服務器有到該共享常規網絡訪問,並且可以讀取圖像文件,你可以創建一個新的MVC控制器Image
與需要稱作fn
一個字符串參數默認操作Index
。該操作將從該參數創建一個新的FileResult
。然後,當您生成<img>
標記時,請將網址設置爲/image/?fn=\\share\image.png
之類的內容。 (當然,不要忘了添加適當的路由)
如果Web服務器無法訪問該共享,但該頁面用戶有權訪問,則可以嘗試將<img>
標記設置爲file://
URL圖片。但是,這將會很脆弱,根據用戶的操作系統和瀏覽器配置,可能會或可能不會工作。
更新:請仔細閱讀他的回答中提及的@blowdart的安全隱患。
4
不要將映像路徑放在映像標記中作爲腳本的參數。這被稱爲直接對象引用,並且是一件壞事。考慮一下這種腳本/頁面/控制器的簡單實現,它可以作爲/image/?resource=\server\path\img.jpg。
現在如果某人加載/ image/resource /?resource = c:\ windows \ system32 \ config \ SAM會發生什麼情況?您的密碼數據庫被髮送。
你不希望在所有使用完全合格的路徑,理想情況下,你想要麼從該目錄爲所有圖像,並只接受一個文件名,通過執行類似
string filename = Path.GetFileName(userInputtedFilename);
FileInfo file = new FileInfo(Server.Path.Combine("\\Server\share\", filename)));
剝離從任何路徑信息
至少是安全的,但當然用戶可以瀏覽所有的圖像,如果他們的名字是適當的。更安全的是有一個間接對象引用,一個映射表映射表,將GUID映射到實際文件名,並將其用作服務腳本的參數。
服務於一個文件從您的控制器上的安全隱患返回FileContentResult,
public FileContentResult GetFile(Guid indirectReference)
{
byte[] fileContents = // Resolve the file and read it from the indirect reference
mimeType = // Suitable MIME type
return File(fileContent, mimeType, fileName);
}
相關問題
- 1. SharePoint中的共享文件夾鏈接
- 2. ASP MVC3 - 鏈接到共享文件夾上的文件
- 3. 如何獲得公共共享文件/文件夾的鏈接
- 4. Box.com共享鏈接文件夾
- 5. 打開Facebook上的鏈接共享照片
- 6. 上的共享文件夾
- 7. 如何將鏈接嵌入到Facebook上共享的照片中,如Dropbox應用與FB照片共享一樣?
- 8. 添加共享文件夾使用共享鏈接
- 9. 導航鏈接到Dropbox的未共享文件/文件夾
- 10. 創建鏈接到共享文件夾鏈接到MediaWiki
- 11. 使用asp.net打開網絡上的共享文件夾文件
- 12. 隱藏ASP.NET MVC 4項目中的共享文件夾
- 13. 獲取維基共享資源照片的深層鏈接
- 14. 從鏈接獲取完整圖像的照片共享服務
- 15. 共享文件夾和XCode
- 16. 鏈接到照片ASP.NET
- 17. Facebook的照片分享者鏈接?
- 18. Azure使用文件共享從IIS虛擬機共享照片?
- 19. 如何將文件上傳到自己的雲共享鏈接文件夾?
- 20. 提供MVC共享文件夾結構
- 21. 當試圖創建一個共享鏈接到文件夾中的文件夾
- 22. 處理像回形針「系統」文件夾,共享鏈接的文件夾
- 23. 共享文件夾上的ionotifywait
- 24. 在Dropbox上共享文件夾的API
- 25. 鏈接到Firefox中的共享文件夾
- 26. 如何鏈接JSP中的linux samba共享文件夾
- 27. 編程下載內容從共享的Dropbox文件夾鏈接
- 28. ASP.Net無法看到共享文件夾
- 29. 停止直接鏈接到照片文件夾
- 30. 在Firefox中的文件共享鏈接 -
好票據。 – 2010-01-21 10:36:43